From eeaa6f920d6d223f97e49db9745354c31dda5ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Wed, 3 Feb 2021 17:50:21 +0800 Subject: [PATCH 01/19] add null check before updateresultmanifest --- Flow.Launcher.Core/Plugin/PluginManager.cs | 2 ++ Flow.Launcher/ViewModel/MainViewModel.cs | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Flow.Launcher.Core/Plugin/PluginManager.cs b/Flow.Launcher.Core/Plugin/PluginManager.cs index 26167e945ac..700a7d509e2 100644 --- a/Flow.Launcher.Core/Plugin/PluginManager.cs +++ b/Flow.Launcher.Core/Plugin/PluginManager.cs @@ -183,6 +183,8 @@ public static async Task> QueryForPlugin(PluginPair pair, Query que throw new ArgumentOutOfRangeException(); } token.ThrowIfCancellationRequested(); + if (results == null) + return results; UpdatePluginMetadata(results, metadata, query); metadata.QueryCount += 1; diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index 05dbb3a8b8b..afbe6e19758 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -363,7 +363,7 @@ private void QueryContextMenu() } if (!match.IsSearchPrecisionScoreMet()) return false; - + r.Score = match.Score; return true; @@ -512,7 +512,7 @@ async Task QueryTask(PluginPair plugin) await Task.Yield(); var results = await PluginManager.QueryForPlugin(plugin, query, currentCancellationToken); - if (!currentCancellationToken.IsCancellationRequested) + if (!currentCancellationToken.IsCancellationRequested && results != null) _resultsUpdateQueue.Post(new ResultsForUpdate(results, plugin.Metadata, query, currentCancellationToken)); } From d0b94c5b81d0f62f9eef67fc9af97fab7948f6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Wed, 3 Feb 2021 17:50:36 +0800 Subject: [PATCH 02/19] specify name for property to avoid property collision --- Flow.Launcher.Core/Plugin/JsonPRCModel.cs | 2 + Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs | 65 ++++++++++------------ 2 files changed, 32 insertions(+), 35 deletions(-) diff --git a/Flow.Launcher.Core/Plugin/JsonPRCModel.cs b/Flow.Launcher.Core/Plugin/JsonPRCModel.cs index 9bc7c2472cb..247fe1889d6 100644 --- a/Flow.Launcher.Core/Plugin/JsonPRCModel.cs +++ b/Flow.Launcher.Core/Plugin/JsonPRCModel.cs @@ -15,6 +15,7 @@ using System.Collections.Generic; using System.Linq; +using System.Text.Json.Serialization; using Flow.Launcher.Plugin; namespace Flow.Launcher.Core.Plugin @@ -42,6 +43,7 @@ public class JsonRPCResponseModel : JsonRPCModelBase public class JsonRPCQueryResponseModel : JsonRPCResponseModel { + [JsonPropertyName("result")] public new List Result { get; set; } } diff --git a/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs b/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs index 3d4522498d9..c7ad70391b7 100644 --- a/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs +++ b/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs @@ -147,47 +147,42 @@ protected string Execute(ProcessStartInfo startInfo) { try { - using (var process = Process.Start(startInfo)) + using var process = Process.Start(startInfo); + if (process == null) { - if (process != null) + Log.Error("|JsonRPCPlugin.Execute|Can't start new process"); + return string.Empty; + } + + using var standardOutput = process.StandardOutput; + var result = standardOutput.ReadToEnd(); + if (string.IsNullOrEmpty(result)) + { + using (var standardError = process.StandardError) { - using (var standardOutput = process.StandardOutput) + var error = standardError.ReadToEnd(); + if (!string.IsNullOrEmpty(error)) { - var result = standardOutput.ReadToEnd(); - if (string.IsNullOrEmpty(result)) - { - using (var standardError = process.StandardError) - { - var error = standardError.ReadToEnd(); - if (!string.IsNullOrEmpty(error)) - { - Log.Error($"|JsonRPCPlugin.Execute|{error}"); - return string.Empty; - } - else - { - Log.Error("|JsonRPCPlugin.Execute|Empty standard output and standard error."); - return string.Empty; - } - } - } - else if (result.StartsWith("DEBUG:")) - { - MessageBox.Show(new Form { TopMost = true }, result.Substring(6)); - return string.Empty; - } - else - { - return result; - } + Log.Error($"|JsonRPCPlugin.Execute|{error}"); + return string.Empty; + } + else + { + Log.Error("|JsonRPCPlugin.Execute|Empty standard output and standard error."); + return string.Empty; } - } - else - { - Log.Error("|JsonRPCPlugin.Execute|Can't start new process"); - return string.Empty; } } + else if (result.StartsWith("DEBUG:")) + { + MessageBox.Show(new Form { TopMost = true }, result.Substring(6)); + return string.Empty; + } + else + { + return result; + } + } catch (Exception e) { From bcf046f842b404d4583048aabc97c0c18612d6a2 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Wed, 3 Feb 2021 20:51:19 +1100 Subject: [PATCH 03/19] fix move method call only restricted to within the same drive --- .../Search/ResultManager.cs | 2 -- .../PluginsManager.cs | 9 +++++++-- Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs index 600b573cfe5..6872f04b445 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs @@ -1,10 +1,8 @@ using Flow.Launcher.Infrastructure; using Flow.Launcher.Plugin.SharedCommands; using System; -using System.Diagnostics; using System.IO; using System.Linq; -using System.Runtime.CompilerServices; using System.Windows; namespace Flow.Launcher.Plugin.Explorer.Search diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs index 0f5e6d9e8b9..881872fc138 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs @@ -3,6 +3,7 @@ using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin.PluginsManager.Models; +using Flow.Launcher.Plugin.SharedCommands; using System; using System.Collections.Generic; using System.IO; @@ -327,7 +328,9 @@ private void Install(UserPlugin plugin, string downloadedFilePath) var zipFilePath = Path.Combine(tempFolderPath, Path.GetFileName(downloadedFilePath)); - File.Move(downloadedFilePath, zipFilePath); + File.Copy(downloadedFilePath, zipFilePath); + + File.Delete(downloadedFilePath); Utilities.UnZip(zipFilePath, tempFolderPluginPath, true); @@ -345,7 +348,9 @@ private void Install(UserPlugin plugin, string downloadedFilePath) string newPluginPath = Path.Combine(DataLocation.PluginsDirectory, $"{plugin.Name}-{plugin.Version}"); - Directory.Move(pluginFolderPath, newPluginPath); + FilesFolders.CopyAll(pluginFolderPath, newPluginPath); + + Directory.Delete(pluginFolderPath, true); } internal List RequestUninstall(string search) diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json b/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json index 75d6038d431..b37a6b1afef 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json @@ -6,7 +6,7 @@ "Name": "Plugins Manager", "Description": "Management of installing, uninstalling or updating Flow Launcher plugins", "Author": "Jeremy Wu", - "Version": "1.6.1", + "Version": "1.6.2", "Language": "csharp", "Website": "https://github.com/Flow-Launcher/Flow.Launcher", "ExecuteFileName": "Flow.Launcher.Plugin.PluginsManager.dll", From 833aa39884d9d6a31fc7c682115c61057dba76b8 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Wed, 3 Feb 2021 23:12:02 +1100 Subject: [PATCH 04/19] Update readme Todo: add search methods to usage --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ac861129804..578f6f724f9 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,9 @@ Flow Launcher. Dedicated to make your workflow flow more seamlessly. Aimed at be - Support search using environment variable paths - Run batch and PowerShell commands as Administrator or a different user. - Support languages from Chinese to Italian and more. -- Support of wide range of plugins. +- Support wide range of plugins. +- Prioritise the order of each plugin's results +- Save file or folder locations for quick access - Fully portable. [ **SOFTPEDIA EDITOR'S PICK**](https://www.softpedia.com/get/System/Launchers-Shutdown-Tools/Flow-Launcher.shtml) From 3915895a98e17de537b3eecb12aaa42e89e0ce57 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Thu, 4 Feb 2021 19:56:08 +1100 Subject: [PATCH 05/19] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 578f6f724f9..66533c76088 100644 --- a/README.md +++ b/README.md @@ -20,12 +20,12 @@ Flow Launcher. Dedicated to make your workflow flow more seamlessly. Aimed at be - Search everything from applications, files, bookmarks, YouTube, Twitter and more. All from the comfort of your keyboard without ever touching the mouse. - Search for file contents. -- Support search using environment variable paths +- Support search using environment variable paths. - Run batch and PowerShell commands as Administrator or a different user. - Support languages from Chinese to Italian and more. - Support wide range of plugins. -- Prioritise the order of each plugin's results -- Save file or folder locations for quick access +- Prioritise the order of each plugin's results. +- Save file or folder locations for quick access. - Fully portable. [ **SOFTPEDIA EDITOR'S PICK**](https://www.softpedia.com/get/System/Launchers-Shutdown-Tools/Flow-Launcher.shtml) @@ -47,6 +47,7 @@ Windows may complain about security due to code not being signed, this will be c **Usage** - Open flow's search window: Alt+Space is the default hotkey. +- Search programs, bookmarks and control panel items with acronyms eg. `gk` or `gp` for GitKraken Preview; fuzzy search eg.`code` or `vis` for Visual Studio Code - Open context menu: Ctrl+O/Shift+Enter. - Cancel/Return to previous screen: Esc. - Install/Uninstall/Update plugins: in the search window, type `pm install`/`pm uninstall`/`pm update` + the plugin name. From d428d6f56c3c9c57ada6e95250bb1027adc5a2a0 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Thu, 4 Feb 2021 20:01:50 +1100 Subject: [PATCH 06/19] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 66533c76088..94861ec2a4d 100644 --- a/README.md +++ b/README.md @@ -47,8 +47,8 @@ Windows may complain about security due to code not being signed, this will be c **Usage** - Open flow's search window: Alt+Space is the default hotkey. -- Search programs, bookmarks and control panel items with acronyms eg. `gk` or `gp` for GitKraken Preview; fuzzy search eg.`code` or `vis` for Visual Studio Code -- Open context menu: Ctrl+O/Shift+Enter. +- Search programs, bookmarks and control panel items with acronyms eg. `gk` or `gp` for GitKraken Preview; fuzzy search eg. `code` or `vis` for Visual Studio Code +- Open context menu: on the selected result, press Ctrl+O/Shift+Enter. - Cancel/Return to previous screen: Esc. - Install/Uninstall/Update plugins: in the search window, type `pm install`/`pm uninstall`/`pm update` + the plugin name. - Saved user settings are located: From 892b7cf63eaa76fa046ea14c6316945efc10f6fb Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Thu, 4 Feb 2021 20:02:55 +1100 Subject: [PATCH 07/19] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 94861ec2a4d..9af47a5ee01 100644 --- a/README.md +++ b/README.md @@ -47,14 +47,14 @@ Windows may complain about security due to code not being signed, this will be c **Usage** - Open flow's search window: Alt+Space is the default hotkey. -- Search programs, bookmarks and control panel items with acronyms eg. `gk` or `gp` for GitKraken Preview; fuzzy search eg. `code` or `vis` for Visual Studio Code +- Search programs, bookmarks and control panel items with acronyms eg. `gk` or `gp` for GitKraken Preview; fuzzy search eg. `code` or `vis` for Visual Studio Code. - Open context menu: on the selected result, press Ctrl+O/Shift+Enter. - Cancel/Return to previous screen: Esc. - Install/Uninstall/Update plugins: in the search window, type `pm install`/`pm uninstall`/`pm update` + the plugin name. - Saved user settings are located: - If using roaming: `%APPDATA%\FlowLauncher` - If using portable, by default: `%localappdata%\FlowLauncher\app-\UserData` -- Logs are saved along with your user settings folder +- Logs are saved along with your user settings folder. ## Status From c8321c977179a32bc0e67e6f0770f8d4b1165fbf Mon Sep 17 00:00:00 2001 From: kubalav Date: Fri, 5 Feb 2021 12:08:36 +0100 Subject: [PATCH 08/19] Update Slovak translation --- Flow.Launcher/Languages/sk.xaml | 4 ++-- Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml | 2 +- Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml index 64230a93aba..7f1b1739daa 100644 --- a/Flow.Launcher/Languages/sk.xaml +++ b/Flow.Launcher/Languages/sk.xaml @@ -40,8 +40,8 @@ Plugin Nájsť ďalšie pluginy - Povoliť - Zakázať + Povolené + Zakázané Skratka akcie Aktuálna akcia skratky: Nová akcia skratky: diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml index 211f2b4308e..fe5afa317c2 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml @@ -7,7 +7,7 @@ Čakajte, prosím… Úspešne stiahnuté {0} od {1} {2}{3}Chcete odinštalovať tento plugin? Po odinštalovaní sa Flow automaticky reštartuje. - {0} by {1} {2}{3}Chcete nainštalovať tento plugin? Po odinštalovaní sa Flow automaticky reštartuje. + {0} by {1} {2}{3}Chcete nainštalovať tento plugin? Po nainštalovaní sa Flow automaticky reštartuje. Inštalovať plugin Odinštalovať plugin Inštalácia zlyhala: nepodarilo sa nájsť metadáta súboru plugin.json nového pluginu diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml index 47644fbe982..851d9f244d5 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml @@ -4,7 +4,7 @@ Otvoriť vyhľadávanie v: Nové okno Nová karta - Zadajte cestu k prehliadaču: + Cesta k prehliadaču: Vybrať Odstrániť Upraviť From 988c2658117ae08624166606e81c91e554ee51df Mon Sep 17 00:00:00 2001 From: kubalav Date: Fri, 5 Feb 2021 12:22:00 +0100 Subject: [PATCH 09/19] enhanced translation --- Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml index c08f0265c05..b0d84f45dc2 100644 --- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml @@ -6,7 +6,7 @@ Spracúva matematické operácie.(Skúste 5*3-2 vo flowlauncheri) Nie je číslo (NaN) Nesprávny alebo neúplný výraz (Nezabudli ste na zátvorky?) - Kopírovať toto číslo do schránky + Kopírovať výsledok do schránky Oddeľovač des. miest Oddeľovač desatinných miest použitý vo výsledku. Použiť podľa systému From 8fa843ea453cc0af58cf51be5698fce8b2ba1868 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Mon, 8 Feb 2021 21:05:50 +1100 Subject: [PATCH 10/19] fix incorrect icopath context menu --- .../ContextMenu.cs | 4 ++-- .../Images/{website.png => manifestsite.png} | Bin .../Flow.Launcher.Plugin.PluginsManager/plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename Plugins/Flow.Launcher.Plugin.PluginsManager/Images/{website.png => manifestsite.png} (100%) diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/ContextMenu.cs index 7bc357be421..85f918a0305 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/ContextMenu.cs @@ -25,7 +25,7 @@ public List LoadContextMenus(Result selectedResult) { Title = Context.API.GetTranslation("plugin_pluginsmanager_plugin_contextmenu_openwebsite_title"), SubTitle = Context.API.GetTranslation("plugin_pluginsmanager_plugin_contextmenu_openwebsite_subtitle"), - IcoPath = "Images\\website.png", + IcoPath = selectedResult.IcoPath, Action = _ => { SharedCommands.SearchWeb.NewTabInBrowser(pluginManifestInfo.Website); @@ -63,7 +63,7 @@ public List LoadContextMenus(Result selectedResult) { Title = Context.API.GetTranslation("plugin_pluginsmanager_plugin_contextmenu_pluginsmanifest_title"), SubTitle = Context.API.GetTranslation("plugin_pluginsmanager_plugin_contextmenu_pluginsmanifest_subtitle"), - IcoPath = selectedResult.IcoPath, + IcoPath = "Images\\manifestsite.png", Action = _ => { SharedCommands.SearchWeb.NewTabInBrowser("https://github.com/Flow-Launcher/Flow.Launcher.PluginsManifest"); diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/website.png b/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/manifestsite.png similarity index 100% rename from Plugins/Flow.Launcher.Plugin.PluginsManager/Images/website.png rename to Plugins/Flow.Launcher.Plugin.PluginsManager/Images/manifestsite.png diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json b/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json index b37a6b1afef..ad460158629 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json @@ -6,7 +6,7 @@ "Name": "Plugins Manager", "Description": "Management of installing, uninstalling or updating Flow Launcher plugins", "Author": "Jeremy Wu", - "Version": "1.6.2", + "Version": "1.6.3", "Language": "csharp", "Website": "https://github.com/Flow-Launcher/Flow.Launcher", "ExecuteFileName": "Flow.Launcher.Plugin.PluginsManager.dll", From 52875dab0c00840a7b032fa51770ca35200c861e Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Fri, 12 Feb 2021 07:56:35 +1100 Subject: [PATCH 11/19] version bump --- SolutionAssemblyInfo.cs | 6 +++--- appveyor.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SolutionAssemblyInfo.cs b/SolutionAssemblyInfo.cs index afd76b5d7da..7f13f41306a 100644 --- a/SolutionAssemblyInfo.cs +++ b/SolutionAssemblyInfo.cs @@ -16,6 +16,6 @@ [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("1.7.0")] -[assembly: AssemblyFileVersion("1.7.0")] -[assembly: AssemblyInformationalVersion("1.7.0")] \ No newline at end of file +[assembly: AssemblyVersion("1.7.1")] +[assembly: AssemblyFileVersion("1.7.1")] +[assembly: AssemblyInformationalVersion("1.7.1")] \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index 2c2f43b66b4..6340318d474 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: '1.7.0.{build}' +version: '1.7.1.{build}' init: - ps: | From b503584dbf8be2782085ade7610c423d98516143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Fri, 12 Feb 2021 22:03:35 +0800 Subject: [PATCH 12/19] Use app.ico as icon instead of app.png for setting window --- Flow.Launcher/Flow.Launcher.csproj | 9 +++++++++ Flow.Launcher/Images/app.ico | Bin 0 -> 116895 bytes Flow.Launcher/SettingWindow.xaml | 3 ++- 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 Flow.Launcher/Images/app.ico diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index 289a502d0f7..ce3bebd57b2 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -66,6 +66,9 @@ PreserveNewest + + PreserveNewest + @@ -94,6 +97,12 @@ + + + PreserveNewest + + + diff --git a/Flow.Launcher/Images/app.ico b/Flow.Launcher/Images/app.ico new file mode 100644 index 0000000000000000000000000000000000000000..36b1d22d0b3bcfb91c8ff451953e9eb421da1385 GIT binary patch literal 116895 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 literal 0 HcmV?d00001 diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml index 4c7eac114dd..8d88ff3fdda 100644 --- a/Flow.Launcher/SettingWindow.xaml +++ b/Flow.Launcher/SettingWindow.xaml @@ -11,13 +11,14 @@ xmlns:svgc="http://sharpvectors.codeplex.com/svgc/" x:Class="Flow.Launcher.SettingWindow" mc:Ignorable="d" - Icon="Images\app.png" + Icon="Images\app.ico" Title="{DynamicResource flowlauncher_settings}" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" Height="600" Width="800" Closed="OnClosed" d:DataContext="{d:DesignInstance vm:SettingWindowViewModel}"> + From 9df72010370ce04a12dcb4e60155474010211d13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Fri, 12 Feb 2021 23:47:21 +0800 Subject: [PATCH 13/19] Remove setting after uninstalling plugin --- .../Flow.Launcher.Plugin.PluginsManager.csproj | 1 + .../Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Flow.Launcher.Plugin.PluginsManager.csproj b/Plugins/Flow.Launcher.Plugin.PluginsManager/Flow.Launcher.Plugin.PluginsManager.csproj index cb2507a2b65..f94027bcccd 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Flow.Launcher.Plugin.PluginsManager.csproj +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Flow.Launcher.Plugin.PluginsManager.csproj @@ -18,6 +18,7 @@ + diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs index 881872fc138..b2f18e39ad1 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs @@ -1,8 +1,10 @@ using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.Http; using Flow.Launcher.Infrastructure.Logger; +using Flow.Launcher.Infrastructure.Storage; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin.PluginsManager.Models; +using Flow.Launcher.Plugin.PluginsManager.ViewModels; using Flow.Launcher.Plugin.SharedCommands; using System; using System.Collections.Generic; @@ -400,6 +402,12 @@ internal List RequestUninstall(string search) private void Uninstall(PluginMetadata plugin) { + + + Core.Plugin.PluginManager.Settings.Plugins.Remove(plugin.ID); + Core.Plugin.PluginManager.AllPlugins.RemoveAll(p => p.Metadata.ID == plugin.ID); + + // Marked for deletion. Will be deleted on next start up using var _ = File.CreateText(Path.Combine(plugin.PluginDirectory, "NeedDelete.txt")); } From 59a767fafbaf469978ce548b2b62d830489e2495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Sat, 13 Feb 2021 12:22:59 +0800 Subject: [PATCH 14/19] remove unexpected space --- Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs index b2f18e39ad1..4949c4e0480 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs @@ -402,8 +402,6 @@ internal List RequestUninstall(string search) private void Uninstall(PluginMetadata plugin) { - - Core.Plugin.PluginManager.Settings.Plugins.Remove(plugin.ID); Core.Plugin.PluginManager.AllPlugins.RemoveAll(p => p.Metadata.ID == plugin.ID); From baf75c4985745a53b89640724635fa027e99ae39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Sat, 13 Feb 2021 12:25:02 +0800 Subject: [PATCH 15/19] remove extra copy --- Flow.Launcher/Flow.Launcher.csproj | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index ce3bebd57b2..01098771d77 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -97,12 +97,6 @@ - - - PreserveNewest - - - From 0707ae39978019671683f7bd8650d9e0677d10f9 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Sat, 13 Feb 2021 21:03:26 +1100 Subject: [PATCH 16/19] fix formattng --- .../Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs index 4949c4e0480..90d103bc712 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs @@ -1,10 +1,9 @@ +using Flow.Launcher.Core.Plugin; using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.Http; using Flow.Launcher.Infrastructure.Logger; -using Flow.Launcher.Infrastructure.Storage; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin.PluginsManager.Models; -using Flow.Launcher.Plugin.PluginsManager.ViewModels; using Flow.Launcher.Plugin.SharedCommands; using System; using System.Collections.Generic; @@ -402,9 +401,8 @@ internal List RequestUninstall(string search) private void Uninstall(PluginMetadata plugin) { - Core.Plugin.PluginManager.Settings.Plugins.Remove(plugin.ID); - Core.Plugin.PluginManager.AllPlugins.RemoveAll(p => p.Metadata.ID == plugin.ID); - + PluginManager.Settings.Plugins.Remove(plugin.ID); + PluginManager.AllPlugins.RemoveAll(p => p.Metadata.ID == plugin.ID); // Marked for deletion. Will be deleted on next start up using var _ = File.CreateText(Path.Combine(plugin.PluginDirectory, "NeedDelete.txt")); From 92f757c47ed44c8fc852aaf1198cd70bdfed66b5 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Sat, 13 Feb 2021 21:35:08 +1100 Subject: [PATCH 17/19] add restart notes --- Flow.Launcher/PublicAPIInstance.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs index 427fd9fc639..0afa67d1a97 100644 --- a/Flow.Launcher/PublicAPIInstance.cs +++ b/Flow.Launcher/PublicAPIInstance.cs @@ -61,6 +61,9 @@ public void RestartApp() // which will cause ungraceful exit SaveAppAllSettings(); + // Restart requires Squirrel's Update.exe to be present in the parent folder, + // it is only published from the project's release pipeline. When debugging without it, + // the project may not restart or just terminates. This is expected. UpdateManager.RestartApp(Constant.ApplicationFileName); } From 7c2c78733ef1dffcabf84aab39d813c54c259a99 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Sat, 13 Feb 2021 21:41:56 +1100 Subject: [PATCH 18/19] version bump PluginsManager --- Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json b/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json index ad460158629..4cba7ec83e8 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json @@ -6,7 +6,7 @@ "Name": "Plugins Manager", "Description": "Management of installing, uninstalling or updating Flow Launcher plugins", "Author": "Jeremy Wu", - "Version": "1.6.3", + "Version": "1.6.4", "Language": "csharp", "Website": "https://github.com/Flow-Launcher/Flow.Launcher", "ExecuteFileName": "Flow.Launcher.Plugin.PluginsManager.dll", From 13f737740e048bbea16d2d453f277ed7564eefd2 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Sat, 13 Feb 2021 22:01:52 +1100 Subject: [PATCH 19/19] fix formatting --- Flow.Launcher/Flow.Launcher.csproj | 6 +++--- Flow.Launcher/SettingWindow.xaml | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index 01098771d77..20e847f8267 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -66,9 +66,9 @@ PreserveNewest - - PreserveNewest - + + PreserveNewest + diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml index 8d88ff3fdda..cb0ef2defa1 100644 --- a/Flow.Launcher/SettingWindow.xaml +++ b/Flow.Launcher/SettingWindow.xaml @@ -18,7 +18,6 @@ Height="600" Width="800" Closed="OnClosed" d:DataContext="{d:DesignInstance vm:SettingWindowViewModel}"> -