diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/en.xaml index 573ca9051..bb0d6e5fb 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/en.xaml @@ -46,6 +46,9 @@ {0} plugins successfully updated. Please restart Flow. Plugin {0} has already been modified. Please restart Flow before making any further changes. + Invalid zip installer file + Please check if there is plugin.json in {0} + Plugins Manager Management of installing, uninstalling or updating Flow Launcher plugins diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs index 25182f6d3..6ccd781c3 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs @@ -242,6 +242,18 @@ namespace Flow.Launcher.Plugin.PluginsManager if (FilesFolders.IsZipFilePath(search, checkFileExists: true)) { pluginFromLocalPath = Utilities.GetPluginInfoFromZip(search); + + if (pluginFromLocalPath == null) return new List + { + new() + { + Title = Context.API.GetTranslation("plugin_pluginsmanager_invalid_zip_title"), + SubTitle = string.Format(Context.API.GetTranslation("plugin_pluginsmanager_invalid_zip_subtitle"), + search), + IcoPath = icoPath + } + }; + pluginFromLocalPath.LocalInstallPath = search; updateFromLocalPath = true; } @@ -559,6 +571,20 @@ namespace Flow.Launcher.Plugin.PluginsManager { var plugin = Utilities.GetPluginInfoFromZip(localPath); + if (plugin == null) + { + return new List + { + new() + { + Title = Context.API.GetTranslation("plugin_pluginsmanager_invalid_zip_title"), + SubTitle = string.Format(Context.API.GetTranslation("plugin_pluginsmanager_invalid_zip_subtitle"), + localPath), + IcoPath = icoPath + } + }; + } + plugin.LocalInstallPath = localPath; return new List diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Utilities.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/Utilities.cs index 4bb78f6ff..d76ce40c4 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Utilities.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Utilities.cs @@ -65,9 +65,7 @@ namespace Flow.Launcher.Plugin.PluginsManager using (ZipArchive archive = System.IO.Compression.ZipFile.OpenRead(filePath)) { - var pluginJsonPath = archive.Entries.FirstOrDefault(x => x.Name == "plugin.json").ToString(); - ZipArchiveEntry pluginJsonEntry = archive.GetEntry(pluginJsonPath); - + var pluginJsonEntry = archive.Entries.FirstOrDefault(x => x.Name == "plugin.json"); if (pluginJsonEntry != null) { using Stream stream = pluginJsonEntry.Open();