예제 #1
0
        public IActionResult Delete(Guid id)
        {
            var module = _pluginManager.GetPlugin(id);

            _pluginManager.DisablePlugin(id);
            _pluginManager.DeletePlugin(id);
            var moduleName = module.Name;

            var matchedItem = _partManager.ApplicationParts.FirstOrDefault(p => p.Name == moduleName);

            if (matchedItem != null)
            {
                _partManager.ApplicationParts.Remove(matchedItem);
                matchedItem = null;
            }

            MyActionDescriptorChangeProvider.Instance.HasChanged = true;
            MyActionDescriptorChangeProvider.Instance.TokenSource.Cancel();

            PluginsLoadContexts.RemovePluginContext(module.Name);

            var directory = new DirectoryInfo($"{AppDomain.CurrentDomain.BaseDirectory}Modules/{module.Name}");

            directory.Delete(true);

            return(RedirectToAction("Index"));
        }
        private void DeleteCommandExecute(PluginInfo file)
        {
            var confirmed = _uiServices.Confirm(
                "Confirm deleting " + file,
                Resources.ConfirmToDeletePlugin,
                isWarning: true);

            if (!confirmed)
            {
                return;
            }

            var succeeded = _pluginManager.DeletePlugin(file);

            if (succeeded)
            {
                Plugins.Remove(file);
            }
        }
예제 #3
0
        public IActionResult Delete(Guid id)
        {
            var module = _pluginManager.GetPlugin(id);

            _pluginManager.DisablePlugin(id);
            _pluginManager.DeletePlugin(id);

            PluginsLoadContexts.RemovePluginContext(module.Name);

            GC.Collect();
            GC.WaitForPendingFinalizers();

            var directory = new DirectoryInfo($"{AppDomain.CurrentDomain.BaseDirectory}Modules/{module.Name}");

            directory.Delete(true);

            MyActionDescriptorChangeProvider.Instance.HasChanged = true;
            MyActionDescriptorChangeProvider.Instance.TokenSource.Cancel();

            return(RedirectToAction("Index"));
        }
예제 #4
0
        public IActionResult Delete(Guid id)
        {
            _pluginManager.DeletePlugin(id);

            return(RedirectToAction("Index"));
        }