PackageRestore
This happens in two steps, deliberately. Offer(PluginRequirement) asks the package server what it can supply, which is what allows the user to be shown a button only when pressing it would achieve something. Restore(PackageOffer, bool, IProgress<string>) then acts on an offer without going back to the server to ask the same questions again.
A restore can be permanent, which is an ordinary installation the user keeps, or fleeting, which lasts only as long as this session and leaves the plugin's objects out of the icon panels — see FleetingPlugins. The mechanics are identical either way; only the bookkeeping differs.
Properties
Methods
Offer
#This talks to a server and must not be awaited from the UI thread.
| requirement (PluginRequirement) | The missing plugin to enquire about. |
Restore
#This talks to a server and must not be awaited from the UI thread. The one part which does need the UI thread — loading a plugin, which makes the panels rebuild — is marshalled there internally.
| offer (PackageOffer) | An available offer from Offer(PluginRequirement). |
| fleeting (bool) | True to install for the lifetime of this session only, false to install permanently. |
| log (IProgress<string> = null) | Optional progress sink, one line per step. |