Properties
CorePlugins
#IsLoading
#The load lock is held for the entire duration of a plugin load, so a lock which cannot be taken right now means another thread is busy loading. Taking the lock the usual way would block until that load completes, so this probes the lock instead of waiting on it. On the loading thread itself the lock is re-entrant and the loading set is consulted directly.
LoadState
#State
#Methods
ComponentAssemblies
#| kind (PluginKind) | Assembly kinds to include in the enumeration. |
DescribeUninstall
#The two kinds of installation carry very different risk. A custom plugin is no more than an entry on a list of files to load, so removing it changes nothing on disk and can be undone by picking the same file again. A Yak package is files, every version of them, and getting them back means downloading them again — assuming the server still has them.
| location (string) | Plugin file which would be uninstalled. |
FindPluginForObject
#| obj (IDocumentObject) |
FindPluginForObject
#| objectType (Type) |
ForgetPlugin
#| location (string) | Location to forget. |
InstallCustomPlugin
#| path (string) |
LoadAllScopedPlugins
#LoadPlugin
#| location (string) | The location of this assembly. If no file location is associated (for example in the case of assemblies compiled in memory) then the assembly FullName may be used instead. |
| assembly (Assembly) | Assembly to load. |
| failure (out FailureInfo) | Message in case of load failure. |
LoadPlugin
#| location (string) | Uri of plugin. |
| failure (out FailureInfo) | Message in case of load failure. |
RemovePlugin
#| location (string) | Location to remove from failed list. |
ScopeCustomPlugins
#ScopePlugin
#| location (string) | Location to scope. |
ScopeYakPlugins
#UninstallCustomPlugin
#| path (string) |
UninstallPlugin
#A custom plugin is only ever an entry on a list of files to load, so removing the entry is the whole job. A Yak plugin is a package on disk, and getting rid of it means deleting that — which Windows will not do while the assembly is loaded, so whatever will not go now is put on FleetingPlugins' removal ledger and dealt with at the next startup.