diff --git a/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs b/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs index eb412653e..7318badbe 100644 --- a/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs +++ b/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs @@ -1361,7 +1361,7 @@ namespace Dalamud.Interface.Internal.Windows { this.installStatus = OperationStatus.InProgress; - Task.Run(() => pluginManager.UpdateSinglePluginAsync(update, true, false)) + Task.Run(async () => await pluginManager.UpdateSinglePluginAsync(update, true, false)) .ContinueWith(task => { // There is no need to set as Complete for an individual plugin installation diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs index ad3014b2f..952cf605d 100644 --- a/Dalamud/Plugin/Internal/PluginManager.cs +++ b/Dalamud/Plugin/Internal/PluginManager.cs @@ -685,7 +685,7 @@ namespace Dalamud.Plugin.Internal } /// - /// Update all plugins. + /// Update all non-dev plugins. /// /// Perform a dry run, don't install anything. /// Success or failure and a list of updated plugin metadata. @@ -698,6 +698,10 @@ namespace Dalamud.Plugin.Internal // Prevent collection was modified errors foreach (var plugin in this.UpdatablePlugins) { + // Can't update that! + if (plugin.InstalledPlugin.IsDev) + return null; + var result = await this.UpdateSinglePluginAsync(plugin, false, dryRun); if (result != null) updatedList.Add(result); @@ -721,10 +725,6 @@ namespace Dalamud.Plugin.Internal { var plugin = metadata.InstalledPlugin; - // Can't update that! - if (plugin.IsDev) - return null; - var updateStatus = new PluginUpdateStatus { InternalName = plugin.Manifest.InternalName, @@ -753,16 +753,33 @@ namespace Dalamud.Plugin.Internal } } - try + if (plugin.IsDev) { - plugin.Disable(); - this.InstalledPlugins = this.InstalledPlugins.Remove(plugin); + try + { + plugin.DllFile.Delete(); + this.InstalledPlugins = this.InstalledPlugins.Remove(plugin); + } + catch (Exception ex) + { + Log.Error(ex, "Error during delete (update)"); + updateStatus.WasUpdated = false; + return updateStatus; + } } - catch (Exception ex) + else { - Log.Error(ex, "Error during disable (update)"); - updateStatus.WasUpdated = false; - return updateStatus; + try + { + plugin.Disable(); + this.InstalledPlugins = this.InstalledPlugins.Remove(plugin); + } + catch (Exception ex) + { + Log.Error(ex, "Error during disable (update)"); + updateStatus.WasUpdated = false; + return updateStatus; + } } try