From f8d0981898c3fec208da6a8a1bc6e76183035e62 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Tue, 25 Feb 2025 10:22:39 +0800 Subject: [PATCH] Update json rpc plugin directory before loading plugins --- Flow.Launcher.Core/Plugin/PluginManager.cs | 24 +++++++++++++++------- Flow.Launcher.Plugin/PluginMetadata.cs | 4 ++-- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Flow.Launcher.Core/Plugin/PluginManager.cs b/Flow.Launcher.Core/Plugin/PluginManager.cs index bbd189efb..c8fe7e818 100644 --- a/Flow.Launcher.Core/Plugin/PluginManager.cs +++ b/Flow.Launcher.Core/Plugin/PluginManager.cs @@ -151,11 +151,26 @@ namespace Flow.Launcher.Core.Plugin _metadatas = PluginConfig.Parse(Directories); Settings = settings; Settings.UpdatePluginSettings(_metadatas); + // Update Json RPC plugin directory before loading plugins so that we can pass the correct plugin directory + UpdateJsonRPCPluginDirectory(_metadatas); AllPlugins = PluginsLoader.Plugins(_metadatas, Settings); - UpdatePluginDirectory(_metadatas); + // Update dotnet plugin directory after loading plugins because we need to get assembly name first + UpdateNotNetPluginDirectory(_metadatas); } - private static void UpdatePluginDirectory(List metadatas) + private static void UpdateJsonRPCPluginDirectory(List metadatas) + { + foreach (var metadata in metadatas) + { + if (!AllowedLanguage.IsDotNet(metadata.Language)) + { + metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, metadata.Name); + metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, metadata.Name); + } + } + } + + private static void UpdateNotNetPluginDirectory(List metadatas) { foreach (var metadata in metadatas) { @@ -164,11 +179,6 @@ namespace Flow.Launcher.Core.Plugin metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, metadata.AssemblyName); metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, metadata.AssemblyName); } - else - { - metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, metadata.Name); - metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, metadata.Name); - } } } diff --git a/Flow.Launcher.Plugin/PluginMetadata.cs b/Flow.Launcher.Plugin/PluginMetadata.cs index dae8f58fd..259716ec1 100644 --- a/Flow.Launcher.Plugin/PluginMetadata.cs +++ b/Flow.Launcher.Plugin/PluginMetadata.cs @@ -9,8 +9,6 @@ namespace Flow.Launcher.Plugin /// public class PluginMetadata : BaseModel { - private string _pluginDirectory; - /// /// Plugin ID. /// @@ -69,6 +67,8 @@ namespace Flow.Launcher.Plugin [JsonIgnore] public string AssemblyName { get; internal set; } + private string _pluginDirectory; + /// /// Plugin source directory. ///