bool StopThisAddin() { if (!_started) { return(true); } try { OnAddinStatusChanged(AddinStatus.Stopping); // if there is any extension points has been loaded for which this addin extends, unloads the extension builders and extensions of this addin [addinRecord] // that extending the extension point. _addinEngine.UnloadFromLoadedExtensionPoints(_addinContext); // unload extension points of this addin, if it's loaded. _addinExtension.UnloadExtensionPoints(); // deactivate the addin. DeactivateThisAddin(); OnAddinStatusChanged(AddinStatus.Stopped); // unregister all assemblies of this addin from the assembly resolver. _addinRuntime.UnregisterAssemblies(); _started = false; return(true); } catch (Exception e) { // log, show message, ... throw; } }