From e320ca1d492594351d81f05ab3da8838c8672dd6 Mon Sep 17 00:00:00 2001
From: Jack251970 <1160210343@qq.com>
Date: Sat, 1 Feb 2025 13:10:32 +0800
Subject: [PATCH 01/10] Add support for deleting plugin settings when
uninstalling plugins
---
Flow.Launcher.Core/Plugin/PluginManager.cs | 21 +++++++++++++++----
.../Languages/en.xaml | 6 ++++--
.../Languages/zh-cn.xaml | 6 ++++--
.../Languages/zh-tw.xaml | 6 ++++--
.../PluginsManager.cs | 6 +++++-
5 files changed, 34 insertions(+), 11 deletions(-)
diff --git a/Flow.Launcher.Core/Plugin/PluginManager.cs b/Flow.Launcher.Core/Plugin/PluginManager.cs
index 5c4eaa1dadc..55bc0e2bddb 100644
--- a/Flow.Launcher.Core/Plugin/PluginManager.cs
+++ b/Flow.Launcher.Core/Plugin/PluginManager.cs
@@ -14,6 +14,7 @@
using Flow.Launcher.Plugin.SharedCommands;
using System.Text.Json;
using Flow.Launcher.Core.Resource;
+using Flow.Launcher.Infrastructure.Storage;
namespace Flow.Launcher.Core.Plugin
{
@@ -439,7 +440,7 @@ public static bool PluginModified(string uuid)
public static void UpdatePlugin(PluginMetadata existingVersion, UserPlugin newVersion, string zipFilePath)
{
InstallPlugin(newVersion, zipFilePath, checkModified:false);
- UninstallPlugin(existingVersion, removeSettings:false, checkModified:false);
+ UninstallPlugin(existingVersion, removeSettings:false, removePluginSettings:false, checkModified: false);
_modifiedPlugins.Add(existingVersion.ID);
}
@@ -454,9 +455,9 @@ public static void InstallPlugin(UserPlugin plugin, string zipFilePath)
///
/// Uninstall a plugin.
///
- public static void UninstallPlugin(PluginMetadata plugin, bool removeSettings = true)
+ public static void UninstallPlugin(PluginMetadata plugin, bool removeSettings = true, bool removePluginSettings = false)
{
- UninstallPlugin(plugin, removeSettings, true);
+ UninstallPlugin(plugin, removeSettings, removePluginSettings, true);
}
#endregion
@@ -529,7 +530,7 @@ internal static void InstallPlugin(UserPlugin plugin, string zipFilePath, bool c
}
}
- internal static void UninstallPlugin(PluginMetadata plugin, bool removeSettings, bool checkModified)
+ internal static void UninstallPlugin(PluginMetadata plugin, bool removeSettings, bool removePluginSettings, bool checkModified)
{
if (checkModified && PluginModified(plugin.ID))
{
@@ -542,6 +543,18 @@ internal static void UninstallPlugin(PluginMetadata plugin, bool removeSettings,
AllPlugins.RemoveAll(p => p.Metadata.ID == plugin.ID);
}
+ if (removePluginSettings)
+ {
+ var assemblyLoader = new PluginAssemblyLoader(plugin.ExecuteFilePath);
+ var assembly = assemblyLoader.LoadAssemblyAndDependencies();
+ var assemblyName = assembly.GetName().Name;
+ var directoryPath = Path.Combine(DataLocation.DataDirectory(), JsonStorage