/// <summary> /// Uninstalls a plugin /// </summary> /// <param name="plugin">The plugin.</param> /// <exception cref="System.ArgumentException"></exception> public void UninstallPlugin(IPlugin plugin) { plugin.OnUninstalling(); // Remove it the quick way for now _applicationHost.RemovePlugin(plugin); var path = plugin.AssemblyFilePath; _logger.Info("Deleting plugin file {0}", path); // Make this case-insensitive to account for possible incorrect assembly naming var file = _fileSystem.GetFilePaths(_fileSystem.GetDirectoryName(path)) .FirstOrDefault(i => string.Equals(i, path, StringComparison.OrdinalIgnoreCase)); if (!string.IsNullOrWhiteSpace(file)) { path = file; } _fileSystem.DeleteFile(path); OnPluginUninstalled(plugin); _applicationHost.NotifyPendingRestart(); }
/// <summary> /// Uninstalls a plugin /// </summary> /// <param name="plugin">The plugin.</param> /// <exception cref="System.ArgumentException"></exception> public void UninstallPlugin(IPlugin plugin) { plugin.OnUninstalling(); // Remove it the quick way for now _applicationHost.RemovePlugin(plugin); _fileSystem.DeleteFile(plugin.AssemblyFilePath); OnPluginUninstalled(plugin); _applicationHost.NotifyPendingRestart(); }
/// <summary> /// Uninstalls a plugin /// </summary> /// <param name="plugin">The plugin.</param> /// <exception cref="ArgumentException"></exception> public void UninstallPlugin(IPlugin plugin) { plugin.OnUninstalling(); // Remove it the quick way for now _applicationHost.RemovePlugin(plugin); var path = plugin.AssemblyFilePath; bool isDirectory = false; // Check if we have a plugin directory we should remove too if (Path.GetDirectoryName(plugin.AssemblyFilePath) != _appPaths.PluginsPath) { path = Path.GetDirectoryName(plugin.AssemblyFilePath); isDirectory = true; } // Make this case-insensitive to account for possible incorrect assembly naming var file = _fileSystem.GetFilePaths(Path.GetDirectoryName(path)) .FirstOrDefault(i => string.Equals(i, path, StringComparison.OrdinalIgnoreCase)); if (!string.IsNullOrWhiteSpace(file)) { path = file; } if (isDirectory) { _logger.LogInformation("Deleting plugin directory {0}", path); Directory.Delete(path, true); } else { _logger.LogInformation("Deleting plugin file {0}", path); _fileSystem.DeleteFile(path); } var list = _config.Configuration.UninstalledPlugins.ToList(); var filename = Path.GetFileName(path); if (!list.Contains(filename, StringComparer.OrdinalIgnoreCase)) { list.Add(filename); _config.Configuration.UninstalledPlugins = list.ToArray(); _config.SaveConfiguration(); } OnPluginUninstalled(plugin); _applicationHost.NotifyPendingRestart(); }