From c3a67d46f6fcaa09f86c4c2985dc3991028b3477 Mon Sep 17 00:00:00 2001 From: Oren Nachman Date: Wed, 27 Jul 2022 16:34:30 -0700 Subject: [PATCH 1/6] Fix crash when user does not have access to registry startup keys Instead log an error about non-critical functionality and continue on. --- Flow.Launcher/SettingWindow.xaml.cs | 34 +++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index 1201318305b..0dcbc6b1b17 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -4,6 +4,7 @@ using Flow.Launcher.Helper; using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.Hotkey; +using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; using Flow.Launcher.Plugin.SharedCommands; @@ -70,24 +71,43 @@ private void OnAutoStartupUncheck(object sender, RoutedEventArgs e) public static void SetStartup() { - using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); - key?.SetValue(Constant.FlowLauncher, Constant.ExecutablePath); + try + { + using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); + key?.SetValue(Constant.FlowLauncher, Constant.ExecutablePath); + } + catch (Exception e) + { + Log.Error("SettingsWindow", $"Ignoring non-critical registry error (user permissions?): {e}"); + } } private void RemoveStartup() { - using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); - key?.DeleteValue(Constant.FlowLauncher, false); + try + { + using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); + key?.DeleteValue(Constant.FlowLauncher, false); + } + catch (Exception e) + { + Log.Error("SettingsWindow", $"Ignoring non-critical registry error (user permissions?): {e}"); + } } public static bool StartupSet() { - using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); - var path = key?.GetValue(Constant.FlowLauncher) as string; - if (path != null) + try { + using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); + var path = key?.GetValue(Constant.FlowLauncher) as string; return path == Constant.ExecutablePath; } + catch (Exception e) + { + Log.Error("SettingsWindow", $"Ignoring non-critical registry error (user permissions?): {e}"); + } + return false; } From bde85c87a7b6f55271ad421e80330f09c2f98d81 Mon Sep 17 00:00:00 2001 From: Oren Nachman Date: Fri, 29 Jul 2022 00:09:33 -0700 Subject: [PATCH 2/6] Refactor auto-startup registry code into its own helper --- Flow.Launcher/App.xaml.cs | 10 +-- Flow.Launcher/Helper/AutoStartup.cs | 62 +++++++++++++++++++ Flow.Launcher/SettingWindow.xaml.cs | 52 ++-------------- .../ViewModel/SettingWindowViewModel.cs | 15 ++++- 4 files changed, 83 insertions(+), 56 deletions(-) create mode 100644 Flow.Launcher/Helper/AutoStartup.cs diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs index 4ebff16a935..755d206d539 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics; using System.Text; using System.Threading.Tasks; @@ -104,15 +104,11 @@ await Stopwatch.NormalAsync("|App.OnStartup|Startup cost", async () => }); } - private void AutoStartup() { - if (_settings.StartFlowLauncherOnSystemStartup) + if (_settings.StartFlowLauncherOnSystemStartup && !Helper.AutoStartup.IsEnabled) { - if (!SettingWindow.StartupSet()) - { - SettingWindow.SetStartup(); - } + Helper.AutoStartup.Enable(); } } diff --git a/Flow.Launcher/Helper/AutoStartup.cs b/Flow.Launcher/Helper/AutoStartup.cs new file mode 100644 index 00000000000..816adfaacae --- /dev/null +++ b/Flow.Launcher/Helper/AutoStartup.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Flow.Launcher.Infrastructure; +using Flow.Launcher.Infrastructure.Logger; +using Microsoft.Win32; + +namespace Flow.Launcher.Helper +{ + public class AutoStartup + { + private const string StartupPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; + + public static bool IsEnabled + { + get + { + try + { + using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); + var path = key?.GetValue(Constant.FlowLauncher) as string; + return path == Constant.ExecutablePath; + } + catch (Exception e) + { + Log.Error("AutoStartup", $"Ignoring non-critical registry error (user permissions?): {e}"); + } + + return false; + } + } + + public static void Disable() + { + try + { + using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); + key?.DeleteValue(Constant.FlowLauncher, false); + } + catch (Exception e) + { + Log.Error("AutoStartup", $"Ignoring non-critical registry error (user permissions?): {e}"); + } + } + + internal static void Enable() + { + try + { + using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); + key?.SetValue(Constant.FlowLauncher, Constant.ExecutablePath); + } + catch (Exception e) + { + Log.Error("AutoStartup", $"Ignoring non-critical registry error (user permissions?): {e}"); + } + + } + } +} diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index 0dcbc6b1b17..d5259d497b8 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -1,4 +1,4 @@ -using Flow.Launcher.Core.ExternalPlugins; +using Flow.Launcher.Core.ExternalPlugins; using Flow.Launcher.Core.Plugin; using Flow.Launcher.Core.Resource; using Flow.Launcher.Helper; @@ -31,8 +31,6 @@ namespace Flow.Launcher { public partial class SettingWindow { - private const string StartupPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; - public readonly IPublicAPI API; private Settings settings; private SettingWindowViewModel viewModel; @@ -61,54 +59,12 @@ private void OnLoaded(object sender, RoutedEventArgs e) private void OnAutoStartupChecked(object sender, RoutedEventArgs e) { - SetStartup(); + viewModel.SetStartup(); } private void OnAutoStartupUncheck(object sender, RoutedEventArgs e) { - RemoveStartup(); - } - - public static void SetStartup() - { - try - { - using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); - key?.SetValue(Constant.FlowLauncher, Constant.ExecutablePath); - } - catch (Exception e) - { - Log.Error("SettingsWindow", $"Ignoring non-critical registry error (user permissions?): {e}"); - } - } - - private void RemoveStartup() - { - try - { - using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); - key?.DeleteValue(Constant.FlowLauncher, false); - } - catch (Exception e) - { - Log.Error("SettingsWindow", $"Ignoring non-critical registry error (user permissions?): {e}"); - } - } - - public static bool StartupSet() - { - try - { - using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true); - var path = key?.GetValue(Constant.FlowLauncher) as string; - return path == Constant.ExecutablePath; - } - catch (Exception e) - { - Log.Error("SettingsWindow", $"Ignoring non-critical registry error (user permissions?): {e}"); - } - - return false; + viewModel.RemoveStartup(); } private void OnSelectPythonDirectoryClick(object sender, RoutedEventArgs e) @@ -404,4 +360,4 @@ private void ItemSizeChanged(object sender, SizeChangedEventArgs e) Plugins.ScrollIntoView(Plugins.SelectedItem); } } -} \ No newline at end of file +} diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index 2fc6934d58a..faa41c0f62e 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -216,6 +216,19 @@ public string TestProxy() #endregion + #region startup + + public void SetStartup() + { + AutoStartup.Enable(); + } + + public void RemoveStartup() + { + AutoStartup.Disable(); + } + #endregion + #region plugin public static string Plugin => @"https://github.com/Flow-Launcher/Flow.Launcher.PluginsManifest"; From c557031ef169b2edea219deeca4d8cefaccc13e6 Mon Sep 17 00:00:00 2001 From: Oren Nachman Date: Sun, 31 Jul 2022 16:28:03 -0700 Subject: [PATCH 3/6] Show notification when failing to enable/disable autostartup --- Flow.Launcher/App.xaml.cs | 14 ++++++++++++- Flow.Launcher/Helper/AutoStartup.cs | 9 ++++---- Flow.Launcher/Languages/da.xaml | 2 ++ Flow.Launcher/Languages/de.xaml | 2 ++ Flow.Launcher/Languages/en.xaml | 2 ++ Flow.Launcher/Languages/es-419.xaml | 2 ++ Flow.Launcher/Languages/es.xaml | 2 ++ Flow.Launcher/Languages/fr.xaml | 2 ++ Flow.Launcher/Languages/it.xaml | 2 ++ Flow.Launcher/Languages/ja.xaml | 2 ++ Flow.Launcher/Languages/ko.xaml | 2 ++ Flow.Launcher/Languages/nb-NO.xaml | 2 ++ Flow.Launcher/Languages/nb.xaml | 2 ++ Flow.Launcher/Languages/nl.xaml | 2 ++ Flow.Launcher/Languages/pl.xaml | 2 ++ Flow.Launcher/Languages/pt-br.xaml | 2 ++ Flow.Launcher/Languages/pt-pt.xaml | 2 ++ Flow.Launcher/Languages/ru.xaml | 2 ++ Flow.Launcher/Languages/sk.xaml | 2 ++ Flow.Launcher/Languages/sr.xaml | 2 ++ Flow.Launcher/Languages/tr.xaml | 2 ++ Flow.Launcher/Languages/uk-UA.xaml | 2 ++ Flow.Launcher/Languages/zh-cn.xaml | 2 ++ Flow.Launcher/Languages/zh-tw.xaml | 2 ++ Flow.Launcher/Notification.cs | 4 ++-- Flow.Launcher/PublicAPIInstance.cs | 4 ++-- Flow.Launcher/ViewModel/MainViewModel.cs | 8 +++---- .../ViewModel/SettingWindowViewModel.cs | 21 +++++++++++++++++-- 28 files changed, 89 insertions(+), 15 deletions(-) diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs index 755d206d539..228ec7ba29f 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -106,9 +106,21 @@ await Stopwatch.NormalAsync("|App.OnStartup|Startup cost", async () => private void AutoStartup() { + // we try to enable auto-startup on first launch, or reenable if it was removed + // but the user still has the setting set if (_settings.StartFlowLauncherOnSystemStartup && !Helper.AutoStartup.IsEnabled) { - Helper.AutoStartup.Enable(); + try + { + Helper.AutoStartup.Enable(); + } + catch (Exception e) + { + // but if it fails (permissions, etc) then don't keep retrying + // this also gives the user a visual indication in the Settings widget + _settings.StartFlowLauncherOnSystemStartup = false; + Notification.Show(InternationalizationManager.Instance.GetTranslation("registerAutoStartFailed"), e.Message); + } } } diff --git a/Flow.Launcher/Helper/AutoStartup.cs b/Flow.Launcher/Helper/AutoStartup.cs index 816adfaacae..95632402032 100644 --- a/Flow.Launcher/Helper/AutoStartup.cs +++ b/Flow.Launcher/Helper/AutoStartup.cs @@ -25,7 +25,7 @@ public static bool IsEnabled } catch (Exception e) { - Log.Error("AutoStartup", $"Ignoring non-critical registry error (user permissions?): {e}"); + Log.Error("AutoStartup", $"Ignoring non-critical registry error (querying if enabled): {e}"); } return false; @@ -41,7 +41,8 @@ public static void Disable() } catch (Exception e) { - Log.Error("AutoStartup", $"Ignoring non-critical registry error (user permissions?): {e}"); + Log.Error("AutoStartup", $"Failed to disable auto-startup: {e}"); + throw; } } @@ -54,9 +55,9 @@ internal static void Enable() } catch (Exception e) { - Log.Error("AutoStartup", $"Ignoring non-critical registry error (user permissions?): {e}"); + Log.Error("AutoStartup", $"Failed to enable auto-startup: {e}"); + throw; } - } } } diff --git a/Flow.Launcher/Languages/da.xaml b/Flow.Launcher/Languages/da.xaml index a67894e979b..988e63bea6e 100644 --- a/Flow.Launcher/Languages/da.xaml +++ b/Flow.Launcher/Languages/da.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Start Flow Launcher ved system start + Error enabling launch on startup + Error disabling launch on startup Skjul Flow Launcher ved mistet fokus Vis ikke notifikationer om nye versioner Husk seneste position diff --git a/Flow.Launcher/Languages/de.xaml b/Flow.Launcher/Languages/de.xaml index e83c5bf6c5c..5b78f3a85b9 100644 --- a/Flow.Launcher/Languages/de.xaml +++ b/Flow.Launcher/Languages/de.xaml @@ -28,6 +28,8 @@ Portabler Modus Speichern Sie alle Einstellungen und Benutzerdaten in einem Ordner (nützlich bei Verwendung mit Wechseldatenträgern oder Clouddiensten). Starte Flow Launcher bei Systemstart + Error enabling launch on startup + Error disabling launch on startup Verstecke Flow Launcher wenn der Fokus verloren geht Zeige keine Nachricht wenn eine neue Version vorhanden ist Merke letzte Ausführungsposition diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 6ec3bb4efb8..544f9e41c44 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -30,6 +30,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Start Flow Launcher on system startup + Error enabling launch on startup + Error disabling launch on startup Hide Flow Launcher when focus is lost Do not show new version notifications Remember last launch location diff --git a/Flow.Launcher/Languages/es-419.xaml b/Flow.Launcher/Languages/es-419.xaml index 302b932a0de..b766500277b 100644 --- a/Flow.Launcher/Languages/es-419.xaml +++ b/Flow.Launcher/Languages/es-419.xaml @@ -28,6 +28,8 @@ Modo portable Almacena todos los ajustes y datos de usuario en una sola carpeta (útil cuando se utiliza con unidades extraíbles o servicios en la nube). Iniciar Flow Launcher al arrancar el sistema + Error enabling launch on startup + Error disabling launch on startup Ocultar Flow Launcher cuando se pierde el enfoque No mostrar notificaciones de nuevas versiones Recordar última ubicación de inicio diff --git a/Flow.Launcher/Languages/es.xaml b/Flow.Launcher/Languages/es.xaml index a2ff40eee2f..4a8767a019d 100644 --- a/Flow.Launcher/Languages/es.xaml +++ b/Flow.Launcher/Languages/es.xaml @@ -28,6 +28,8 @@ Modo Portable Guarda toda la configuración y datos de usuario en una carpeta (Útil cuando se utiliza con unidades extraíbles o servicios en la nube). Cargar Flow Launcher al iniciar el sistema + Error enabling launch on startup + Error disabling launch on startup Ocultar Flow Launcher cuando se pierda el foco No mostrar notificaciones de nuevas versiones Recordar última posición de Flow Launcher diff --git a/Flow.Launcher/Languages/fr.xaml b/Flow.Launcher/Languages/fr.xaml index 1fc24ee11b6..a5708522f1c 100644 --- a/Flow.Launcher/Languages/fr.xaml +++ b/Flow.Launcher/Languages/fr.xaml @@ -28,6 +28,8 @@ Mode Portable Stocker tous les paramètres et données utilisateur dans un seul dossier (Pratique en cas d'utilisation de disques amovibles ou de services cloud). Lancer Flow Launcher au démarrage du système + Error enabling launch on startup + Error disabling launch on startup Cacher Flow Launcher lors de la perte de focus Ne pas afficher les notifications lors d'une nouvelle version Se souvenir du dernier emplacement de la fenêtre diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml index 42ad82b7d2d..11f0c7f5c9a 100644 --- a/Flow.Launcher/Languages/it.xaml +++ b/Flow.Launcher/Languages/it.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Avvia Wow all'avvio di Windows + Error enabling launch on startup + Error disabling launch on startup Nascondi Flow Launcher quando perde il focus Non mostrare le notifiche per una nuova versione Ricorda l'ultima posizione di avvio del launcher diff --git a/Flow.Launcher/Languages/ja.xaml b/Flow.Launcher/Languages/ja.xaml index b4e687035c4..5b542a0a37d 100644 --- a/Flow.Launcher/Languages/ja.xaml +++ b/Flow.Launcher/Languages/ja.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). スタートアップ時にFlow Launcherを起動する + Error enabling launch on startup + Error disabling launch on startup フォーカスを失った時にFlow Launcherを隠す 最新版が入手可能であっても、アップグレードメッセージを表示しない 前回のランチャーの位置を記憶 diff --git a/Flow.Launcher/Languages/ko.xaml b/Flow.Launcher/Languages/ko.xaml index 094985b3a68..aae4322a355 100644 --- a/Flow.Launcher/Languages/ko.xaml +++ b/Flow.Launcher/Languages/ko.xaml @@ -28,6 +28,8 @@ 포터블 모드 모든 설정이 폴더안에 들어갑니다. USB 드라이브나 클라우드로 사용 가능합니다. 시스템 시작 시 Flow Launcher 실행 + Error enabling launch on startup + Error disabling launch on startup 포커스 잃으면 Flow Launcher 숨김 새 버전 알림 끄기 마지막 실행 위치 기억 diff --git a/Flow.Launcher/Languages/nb-NO.xaml b/Flow.Launcher/Languages/nb-NO.xaml index 859ec20a0bb..525591998a9 100644 --- a/Flow.Launcher/Languages/nb-NO.xaml +++ b/Flow.Launcher/Languages/nb-NO.xaml @@ -18,6 +18,8 @@ Flow Launcher-innstillinger Generelt Start Flow Launcher ved systemstart + Error enabling launch on startup + Error disabling launch on startup Skjul Flow Launcher ved mistet fokus Ikke vis varsel om ny versjon Husk siste plassering diff --git a/Flow.Launcher/Languages/nb.xaml b/Flow.Launcher/Languages/nb.xaml index d85ab98daab..48180910f67 100644 --- a/Flow.Launcher/Languages/nb.xaml +++ b/Flow.Launcher/Languages/nb.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Start Flow Launcher on system startup + Error enabling launch on startup + Error disabling launch on startup Hide Flow Launcher when focus is lost Do not show new version notifications Remember last launch location diff --git a/Flow.Launcher/Languages/nl.xaml b/Flow.Launcher/Languages/nl.xaml index 715e934d586..d56e26149f2 100644 --- a/Flow.Launcher/Languages/nl.xaml +++ b/Flow.Launcher/Languages/nl.xaml @@ -28,6 +28,8 @@ Draagbare Modus Alle instellingen en gebruikersgegevens opslaan in één map (Nuttig bij het gebruik van verwijderbare schijven of cloud services). Start Flow Launcher als systeem opstart + Error enabling launch on startup + Error disabling launch on startup Verberg Flow Launcher als focus verloren is Laat geen nieuwe versie notificaties zien Herinner laatste opstart locatie diff --git a/Flow.Launcher/Languages/pl.xaml b/Flow.Launcher/Languages/pl.xaml index 8868af59d10..1993e101bb0 100644 --- a/Flow.Launcher/Languages/pl.xaml +++ b/Flow.Launcher/Languages/pl.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Uruchamiaj Flow Launcher przy starcie systemu + Error enabling launch on startup + Error disabling launch on startup Ukryj okno Flow Launcher kiedy przestanie ono być aktywne Nie pokazuj powiadomienia o nowej wersji Zapamiętaj ostatnią pozycję okna diff --git a/Flow.Launcher/Languages/pt-br.xaml b/Flow.Launcher/Languages/pt-br.xaml index ff69d2965a8..34759ddb489 100644 --- a/Flow.Launcher/Languages/pt-br.xaml +++ b/Flow.Launcher/Languages/pt-br.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Iniciar Flow Launcher com inicialização do sistema + Error enabling launch on startup + Error disabling launch on startup Esconder Flow Launcher quando foco for perdido Não mostrar notificações de novas versões Lembrar última localização de lançamento diff --git a/Flow.Launcher/Languages/pt-pt.xaml b/Flow.Launcher/Languages/pt-pt.xaml index 1e2847a5560..8542b4050f5 100644 --- a/Flow.Launcher/Languages/pt-pt.xaml +++ b/Flow.Launcher/Languages/pt-pt.xaml @@ -28,6 +28,8 @@ Modo portátil Guardar todas as definições e dados do utilizador numa pasta (indicado se utilizar discos amovíveis ou serviços cloud) Iniciar Flow Launcher ao arrancar o sistema + Error enabling launch on startup + Error disabling launch on startup Ocultar Flow Launcher ao perder o foco Não notificar acerca de novas versões Memorizar localização anterior diff --git a/Flow.Launcher/Languages/ru.xaml b/Flow.Launcher/Languages/ru.xaml index 55fa3b02d62..4adc04edb8d 100644 --- a/Flow.Launcher/Languages/ru.xaml +++ b/Flow.Launcher/Languages/ru.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Запускать Flow Launcher при запуске системы + Error enabling launch on startup + Error disabling launch on startup Скрывать Flow Launcher, если потерян фокуc Не отображать сообщение об обновлении, когда доступна новая версия Запомнить последнее место запуска diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml index 1ce0f3f4579..aadd51bd9e4 100644 --- a/Flow.Launcher/Languages/sk.xaml +++ b/Flow.Launcher/Languages/sk.xaml @@ -28,6 +28,8 @@ Prenosný režim Uloží všetky nastavenia a používateľské údaje do jedného priečinka (Užitočné pri vymeniteľných diskoch a cloudových službách). Spustiť Flow Launcher pri spustení systému + Error enabling launch on startup + Error disabling launch on startup Schovať Flow Launcher po strate fokusu Nezobrazovať upozornenia na novú verziu Zapamätať si posledné umiestnenie diff --git a/Flow.Launcher/Languages/sr.xaml b/Flow.Launcher/Languages/sr.xaml index 0515e3e6762..73234d825d8 100644 --- a/Flow.Launcher/Languages/sr.xaml +++ b/Flow.Launcher/Languages/sr.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Pokreni Flow Launcher pri podizanju sistema + Error enabling launch on startup + Error disabling launch on startup Sakri Flow Launcher kada se izgubi fokus Ne prikazuj obaveštenje o novoj verziji Zapamti lokaciju poslednjeg pokretanja diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml index 3318cdc146a..613d1ccf879 100644 --- a/Flow.Launcher/Languages/tr.xaml +++ b/Flow.Launcher/Languages/tr.xaml @@ -28,6 +28,8 @@ Taşınabilir Mod Tüm ayarları ve kullanıcı verilerini tek bir klasörde saklayın (Çıkarılabilir sürücüler veya bulut hizmetleri ile kullanıldığında kullanışlıdır). Flow Launcher'u başlangıçta başlat + Error enabling launch on startup + Error disabling launch on startup Odak pencereden ayrıldığında Flow Launcher'u gizle Güncelleme bildirimlerini gösterme Pencere konumunu hatırla diff --git a/Flow.Launcher/Languages/uk-UA.xaml b/Flow.Launcher/Languages/uk-UA.xaml index b7e9525ab6a..6fd01d2badd 100644 --- a/Flow.Launcher/Languages/uk-UA.xaml +++ b/Flow.Launcher/Languages/uk-UA.xaml @@ -28,6 +28,8 @@ Портативний режим Зберігати всі налаштування і дані користувача в одній теці (буде корисно при видаленні дисків або хмарних сервісах). Запускати Flow Launcher при запуску системи + Error enabling launch on startup + Error disabling launch on startup Сховати Flow Launcher, якщо втрачено фокус Не повідомляти про доступні нові версії Запам'ятати останнє місце запуску diff --git a/Flow.Launcher/Languages/zh-cn.xaml b/Flow.Launcher/Languages/zh-cn.xaml index 5dee1cc7528..61adffdf840 100644 --- a/Flow.Launcher/Languages/zh-cn.xaml +++ b/Flow.Launcher/Languages/zh-cn.xaml @@ -28,6 +28,8 @@ 便携模式 将所有设置和用户数据存储在一个文件夹中 (可用于可移除驱动器或云服务)。 开机自启 + Error enabling launch on startup + Error disabling launch on startup 失去焦点时自动隐藏 Flow Launcher 不显示新版本提示 记住上次启动位置 diff --git a/Flow.Launcher/Languages/zh-tw.xaml b/Flow.Launcher/Languages/zh-tw.xaml index 27a51e23edc..e7d65fa528e 100644 --- a/Flow.Launcher/Languages/zh-tw.xaml +++ b/Flow.Launcher/Languages/zh-tw.xaml @@ -28,6 +28,8 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). 開機時啟動 + Error enabling launch on startup + Error disabling launch on startup 失去焦點時自動隱藏 Flow Launcher 不顯示新版本提示 記住上次啟動位置 diff --git a/Flow.Launcher/Notification.cs b/Flow.Launcher/Notification.cs index 3f5565eebe6..57c1e88f28d 100644 --- a/Flow.Launcher/Notification.cs +++ b/Flow.Launcher/Notification.cs @@ -18,7 +18,7 @@ internal static void Uninstall() } [System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "")] - public static void Show(string title, string subTitle, string iconPath) + public static void Show(string title, string subTitle, string iconPath = null) { // Handle notification for win7/8/early win10 if (legacy) @@ -45,4 +45,4 @@ private static void LegacyShow(string title, string subTitle, string iconPath) msg.Show(title, subTitle, iconPath); } } -} \ No newline at end of file +} diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs index 81f7a238965..e698ae5974b 100644 --- a/Flow.Launcher/PublicAPIInstance.cs +++ b/Flow.Launcher/PublicAPIInstance.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Net; @@ -286,4 +286,4 @@ private bool KListener_hookedKeyboardCallback(KeyEvent keyevent, int vkcode, Spe #endregion } -} \ No newline at end of file +} diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index fbcea504e2d..ab0e67519a1 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -306,8 +306,8 @@ private void InitializeKeyCommands() { Notification.Show( InternationalizationManager.Instance.GetTranslation("success"), - InternationalizationManager.Instance.GetTranslation("completedSuccessfully"), - ""); + InternationalizationManager.Instance.GetTranslation("completedSuccessfully") + ); })) .ConfigureAwait(false); }); @@ -927,4 +927,4 @@ public void ResultCopy(string stringToCopy) #endregion } -} \ No newline at end of file +} diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index faa41c0f62e..587349045f4 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -220,12 +220,29 @@ public string TestProxy() public void SetStartup() { - AutoStartup.Enable(); + try + { + AutoStartup.Enable(); + } + catch (Exception e) + { + Notification.Show(InternationalizationManager.Instance.GetTranslation("registerAutoStartFailed"), e.Message); + } } public void RemoveStartup() { - AutoStartup.Disable(); + if (AutoStartup.IsEnabled) + { + try + { + AutoStartup.Disable(); + } + catch (Exception e) + { + Notification.Show(InternationalizationManager.Instance.GetTranslation("deregisterAutoStartFailed"), e.Message); + } + } } #endregion From ec4f3a781a7568eebeea30839bb9d0e4a9e4306e Mon Sep 17 00:00:00 2001 From: Kevin Zhang <45326534+taooceros@users.noreply.github.com> Date: Mon, 1 Aug 2022 11:36:35 -0500 Subject: [PATCH 4/6] Apply Logic in the viewmodel --- Flow.Launcher/SettingWindow.xaml | 4 +--- Flow.Launcher/SettingWindow.xaml.cs | 10 ---------- Flow.Launcher/ViewModel/SettingWindowViewModel.cs | 6 ++++++ 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml index 65297768669..abc8d7205e3 100644 --- a/Flow.Launcher/SettingWindow.xaml +++ b/Flow.Launcher/SettingWindow.xaml @@ -598,10 +598,8 @@ + Style="{DynamicResource SideControlCheckBox}"/> diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index d5259d497b8..c7b4baf2e3b 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -57,16 +57,6 @@ private void OnLoaded(object sender, RoutedEventArgs e) hwndTarget.RenderMode = RenderMode.SoftwareOnly; } - private void OnAutoStartupChecked(object sender, RoutedEventArgs e) - { - viewModel.SetStartup(); - } - - private void OnAutoStartupUncheck(object sender, RoutedEventArgs e) - { - viewModel.RemoveStartup(); - } - private void OnSelectPythonDirectoryClick(object sender, RoutedEventArgs e) { var dlg = new FolderBrowserDialog diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index 587349045f4..189a7bdc868 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -60,7 +60,13 @@ public bool AutoUpdates Settings.AutoUpdates = value; if (value) + { UpdateApp(); + SetStartup(); + } else + { + RemoveStartup(); + } } } From ebbd1daa39a439abe0d529d1f612946cac9870ac Mon Sep 17 00:00:00 2001 From: Oren Nachman Date: Sun, 7 Aug 2022 18:23:35 -0700 Subject: [PATCH 5/6] Use direct binding to set auto-startup Also includes better messaging (single message for registry failure) --- Flow.Launcher/App.xaml.cs | 2 +- Flow.Launcher/Languages/da.xaml | 2 - Flow.Launcher/Languages/de.xaml | 2 - Flow.Launcher/Languages/en.xaml | 3 +- Flow.Launcher/Languages/es-419.xaml | 2 - Flow.Launcher/Languages/es.xaml | 2 - Flow.Launcher/Languages/fr.xaml | 2 - Flow.Launcher/Languages/it.xaml | 2 - Flow.Launcher/Languages/ja.xaml | 2 - Flow.Launcher/Languages/ko.xaml | 2 - Flow.Launcher/Languages/nb-NO.xaml | 2 - Flow.Launcher/Languages/nb.xaml | 2 - Flow.Launcher/Languages/nl.xaml | 2 - Flow.Launcher/Languages/pl.xaml | 2 - Flow.Launcher/Languages/pt-br.xaml | 2 - Flow.Launcher/Languages/pt-pt.xaml | 2 - Flow.Launcher/Languages/ru.xaml | 2 - Flow.Launcher/Languages/sk.xaml | 2 - Flow.Launcher/Languages/sr.xaml | 2 - Flow.Launcher/Languages/tr.xaml | 2 - Flow.Launcher/Languages/uk-UA.xaml | 2 - Flow.Launcher/Languages/zh-cn.xaml | 2 - Flow.Launcher/Languages/zh-tw.xaml | 2 - Flow.Launcher/SettingWindow.xaml | 6 +-- Flow.Launcher/SettingWindow.xaml.cs | 10 ---- .../ViewModel/SettingWindowViewModel.cs | 51 ++++++++----------- 26 files changed, 25 insertions(+), 89 deletions(-) diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs index 228ec7ba29f..8c970edddf6 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -119,7 +119,7 @@ private void AutoStartup() // but if it fails (permissions, etc) then don't keep retrying // this also gives the user a visual indication in the Settings widget _settings.StartFlowLauncherOnSystemStartup = false; - Notification.Show(InternationalizationManager.Instance.GetTranslation("registerAutoStartFailed"), e.Message); + Notification.Show(InternationalizationManager.Instance.GetTranslation("setAutoStartFailed"), e.Message); } } } diff --git a/Flow.Launcher/Languages/da.xaml b/Flow.Launcher/Languages/da.xaml index 988e63bea6e..a67894e979b 100644 --- a/Flow.Launcher/Languages/da.xaml +++ b/Flow.Launcher/Languages/da.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Start Flow Launcher ved system start - Error enabling launch on startup - Error disabling launch on startup Skjul Flow Launcher ved mistet fokus Vis ikke notifikationer om nye versioner Husk seneste position diff --git a/Flow.Launcher/Languages/de.xaml b/Flow.Launcher/Languages/de.xaml index 5b78f3a85b9..e83c5bf6c5c 100644 --- a/Flow.Launcher/Languages/de.xaml +++ b/Flow.Launcher/Languages/de.xaml @@ -28,8 +28,6 @@ Portabler Modus Speichern Sie alle Einstellungen und Benutzerdaten in einem Ordner (nützlich bei Verwendung mit Wechseldatenträgern oder Clouddiensten). Starte Flow Launcher bei Systemstart - Error enabling launch on startup - Error disabling launch on startup Verstecke Flow Launcher wenn der Fokus verloren geht Zeige keine Nachricht wenn eine neue Version vorhanden ist Merke letzte Ausführungsposition diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 544f9e41c44..bdf7450525c 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -30,8 +30,7 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Start Flow Launcher on system startup - Error enabling launch on startup - Error disabling launch on startup + Error setting launch on startup Hide Flow Launcher when focus is lost Do not show new version notifications Remember last launch location diff --git a/Flow.Launcher/Languages/es-419.xaml b/Flow.Launcher/Languages/es-419.xaml index b766500277b..302b932a0de 100644 --- a/Flow.Launcher/Languages/es-419.xaml +++ b/Flow.Launcher/Languages/es-419.xaml @@ -28,8 +28,6 @@ Modo portable Almacena todos los ajustes y datos de usuario en una sola carpeta (útil cuando se utiliza con unidades extraíbles o servicios en la nube). Iniciar Flow Launcher al arrancar el sistema - Error enabling launch on startup - Error disabling launch on startup Ocultar Flow Launcher cuando se pierde el enfoque No mostrar notificaciones de nuevas versiones Recordar última ubicación de inicio diff --git a/Flow.Launcher/Languages/es.xaml b/Flow.Launcher/Languages/es.xaml index 4a8767a019d..a2ff40eee2f 100644 --- a/Flow.Launcher/Languages/es.xaml +++ b/Flow.Launcher/Languages/es.xaml @@ -28,8 +28,6 @@ Modo Portable Guarda toda la configuración y datos de usuario en una carpeta (Útil cuando se utiliza con unidades extraíbles o servicios en la nube). Cargar Flow Launcher al iniciar el sistema - Error enabling launch on startup - Error disabling launch on startup Ocultar Flow Launcher cuando se pierda el foco No mostrar notificaciones de nuevas versiones Recordar última posición de Flow Launcher diff --git a/Flow.Launcher/Languages/fr.xaml b/Flow.Launcher/Languages/fr.xaml index a5708522f1c..1fc24ee11b6 100644 --- a/Flow.Launcher/Languages/fr.xaml +++ b/Flow.Launcher/Languages/fr.xaml @@ -28,8 +28,6 @@ Mode Portable Stocker tous les paramètres et données utilisateur dans un seul dossier (Pratique en cas d'utilisation de disques amovibles ou de services cloud). Lancer Flow Launcher au démarrage du système - Error enabling launch on startup - Error disabling launch on startup Cacher Flow Launcher lors de la perte de focus Ne pas afficher les notifications lors d'une nouvelle version Se souvenir du dernier emplacement de la fenêtre diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml index 11f0c7f5c9a..42ad82b7d2d 100644 --- a/Flow.Launcher/Languages/it.xaml +++ b/Flow.Launcher/Languages/it.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Avvia Wow all'avvio di Windows - Error enabling launch on startup - Error disabling launch on startup Nascondi Flow Launcher quando perde il focus Non mostrare le notifiche per una nuova versione Ricorda l'ultima posizione di avvio del launcher diff --git a/Flow.Launcher/Languages/ja.xaml b/Flow.Launcher/Languages/ja.xaml index 5b542a0a37d..b4e687035c4 100644 --- a/Flow.Launcher/Languages/ja.xaml +++ b/Flow.Launcher/Languages/ja.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). スタートアップ時にFlow Launcherを起動する - Error enabling launch on startup - Error disabling launch on startup フォーカスを失った時にFlow Launcherを隠す 最新版が入手可能であっても、アップグレードメッセージを表示しない 前回のランチャーの位置を記憶 diff --git a/Flow.Launcher/Languages/ko.xaml b/Flow.Launcher/Languages/ko.xaml index aae4322a355..094985b3a68 100644 --- a/Flow.Launcher/Languages/ko.xaml +++ b/Flow.Launcher/Languages/ko.xaml @@ -28,8 +28,6 @@ 포터블 모드 모든 설정이 폴더안에 들어갑니다. USB 드라이브나 클라우드로 사용 가능합니다. 시스템 시작 시 Flow Launcher 실행 - Error enabling launch on startup - Error disabling launch on startup 포커스 잃으면 Flow Launcher 숨김 새 버전 알림 끄기 마지막 실행 위치 기억 diff --git a/Flow.Launcher/Languages/nb-NO.xaml b/Flow.Launcher/Languages/nb-NO.xaml index 525591998a9..859ec20a0bb 100644 --- a/Flow.Launcher/Languages/nb-NO.xaml +++ b/Flow.Launcher/Languages/nb-NO.xaml @@ -18,8 +18,6 @@ Flow Launcher-innstillinger Generelt Start Flow Launcher ved systemstart - Error enabling launch on startup - Error disabling launch on startup Skjul Flow Launcher ved mistet fokus Ikke vis varsel om ny versjon Husk siste plassering diff --git a/Flow.Launcher/Languages/nb.xaml b/Flow.Launcher/Languages/nb.xaml index 48180910f67..d85ab98daab 100644 --- a/Flow.Launcher/Languages/nb.xaml +++ b/Flow.Launcher/Languages/nb.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Start Flow Launcher on system startup - Error enabling launch on startup - Error disabling launch on startup Hide Flow Launcher when focus is lost Do not show new version notifications Remember last launch location diff --git a/Flow.Launcher/Languages/nl.xaml b/Flow.Launcher/Languages/nl.xaml index d56e26149f2..715e934d586 100644 --- a/Flow.Launcher/Languages/nl.xaml +++ b/Flow.Launcher/Languages/nl.xaml @@ -28,8 +28,6 @@ Draagbare Modus Alle instellingen en gebruikersgegevens opslaan in één map (Nuttig bij het gebruik van verwijderbare schijven of cloud services). Start Flow Launcher als systeem opstart - Error enabling launch on startup - Error disabling launch on startup Verberg Flow Launcher als focus verloren is Laat geen nieuwe versie notificaties zien Herinner laatste opstart locatie diff --git a/Flow.Launcher/Languages/pl.xaml b/Flow.Launcher/Languages/pl.xaml index 1993e101bb0..8868af59d10 100644 --- a/Flow.Launcher/Languages/pl.xaml +++ b/Flow.Launcher/Languages/pl.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Uruchamiaj Flow Launcher przy starcie systemu - Error enabling launch on startup - Error disabling launch on startup Ukryj okno Flow Launcher kiedy przestanie ono być aktywne Nie pokazuj powiadomienia o nowej wersji Zapamiętaj ostatnią pozycję okna diff --git a/Flow.Launcher/Languages/pt-br.xaml b/Flow.Launcher/Languages/pt-br.xaml index 34759ddb489..ff69d2965a8 100644 --- a/Flow.Launcher/Languages/pt-br.xaml +++ b/Flow.Launcher/Languages/pt-br.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Iniciar Flow Launcher com inicialização do sistema - Error enabling launch on startup - Error disabling launch on startup Esconder Flow Launcher quando foco for perdido Não mostrar notificações de novas versões Lembrar última localização de lançamento diff --git a/Flow.Launcher/Languages/pt-pt.xaml b/Flow.Launcher/Languages/pt-pt.xaml index 8542b4050f5..1e2847a5560 100644 --- a/Flow.Launcher/Languages/pt-pt.xaml +++ b/Flow.Launcher/Languages/pt-pt.xaml @@ -28,8 +28,6 @@ Modo portátil Guardar todas as definições e dados do utilizador numa pasta (indicado se utilizar discos amovíveis ou serviços cloud) Iniciar Flow Launcher ao arrancar o sistema - Error enabling launch on startup - Error disabling launch on startup Ocultar Flow Launcher ao perder o foco Não notificar acerca de novas versões Memorizar localização anterior diff --git a/Flow.Launcher/Languages/ru.xaml b/Flow.Launcher/Languages/ru.xaml index 4adc04edb8d..55fa3b02d62 100644 --- a/Flow.Launcher/Languages/ru.xaml +++ b/Flow.Launcher/Languages/ru.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Запускать Flow Launcher при запуске системы - Error enabling launch on startup - Error disabling launch on startup Скрывать Flow Launcher, если потерян фокуc Не отображать сообщение об обновлении, когда доступна новая версия Запомнить последнее место запуска diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml index aadd51bd9e4..1ce0f3f4579 100644 --- a/Flow.Launcher/Languages/sk.xaml +++ b/Flow.Launcher/Languages/sk.xaml @@ -28,8 +28,6 @@ Prenosný režim Uloží všetky nastavenia a používateľské údaje do jedného priečinka (Užitočné pri vymeniteľných diskoch a cloudových službách). Spustiť Flow Launcher pri spustení systému - Error enabling launch on startup - Error disabling launch on startup Schovať Flow Launcher po strate fokusu Nezobrazovať upozornenia na novú verziu Zapamätať si posledné umiestnenie diff --git a/Flow.Launcher/Languages/sr.xaml b/Flow.Launcher/Languages/sr.xaml index 73234d825d8..0515e3e6762 100644 --- a/Flow.Launcher/Languages/sr.xaml +++ b/Flow.Launcher/Languages/sr.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). Pokreni Flow Launcher pri podizanju sistema - Error enabling launch on startup - Error disabling launch on startup Sakri Flow Launcher kada se izgubi fokus Ne prikazuj obaveštenje o novoj verziji Zapamti lokaciju poslednjeg pokretanja diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml index 613d1ccf879..3318cdc146a 100644 --- a/Flow.Launcher/Languages/tr.xaml +++ b/Flow.Launcher/Languages/tr.xaml @@ -28,8 +28,6 @@ Taşınabilir Mod Tüm ayarları ve kullanıcı verilerini tek bir klasörde saklayın (Çıkarılabilir sürücüler veya bulut hizmetleri ile kullanıldığında kullanışlıdır). Flow Launcher'u başlangıçta başlat - Error enabling launch on startup - Error disabling launch on startup Odak pencereden ayrıldığında Flow Launcher'u gizle Güncelleme bildirimlerini gösterme Pencere konumunu hatırla diff --git a/Flow.Launcher/Languages/uk-UA.xaml b/Flow.Launcher/Languages/uk-UA.xaml index 6fd01d2badd..b7e9525ab6a 100644 --- a/Flow.Launcher/Languages/uk-UA.xaml +++ b/Flow.Launcher/Languages/uk-UA.xaml @@ -28,8 +28,6 @@ Портативний режим Зберігати всі налаштування і дані користувача в одній теці (буде корисно при видаленні дисків або хмарних сервісах). Запускати Flow Launcher при запуску системи - Error enabling launch on startup - Error disabling launch on startup Сховати Flow Launcher, якщо втрачено фокус Не повідомляти про доступні нові версії Запам'ятати останнє місце запуску diff --git a/Flow.Launcher/Languages/zh-cn.xaml b/Flow.Launcher/Languages/zh-cn.xaml index 61adffdf840..5dee1cc7528 100644 --- a/Flow.Launcher/Languages/zh-cn.xaml +++ b/Flow.Launcher/Languages/zh-cn.xaml @@ -28,8 +28,6 @@ 便携模式 将所有设置和用户数据存储在一个文件夹中 (可用于可移除驱动器或云服务)。 开机自启 - Error enabling launch on startup - Error disabling launch on startup 失去焦点时自动隐藏 Flow Launcher 不显示新版本提示 记住上次启动位置 diff --git a/Flow.Launcher/Languages/zh-tw.xaml b/Flow.Launcher/Languages/zh-tw.xaml index e7d65fa528e..27a51e23edc 100644 --- a/Flow.Launcher/Languages/zh-tw.xaml +++ b/Flow.Launcher/Languages/zh-tw.xaml @@ -28,8 +28,6 @@ Portable Mode Store all settings and user data in one folder (Useful when used with removable drives or cloud services). 開機時啟動 - Error enabling launch on startup - Error disabling launch on startup 失去焦點時自動隱藏 Flow Launcher 不顯示新版本提示 記住上次啟動位置 diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml index 65297768669..4eb283177eb 100644 --- a/Flow.Launcher/SettingWindow.xaml +++ b/Flow.Launcher/SettingWindow.xaml @@ -598,10 +598,8 @@ + IsChecked="{Binding StartFlowLauncherOnSystemStartup}" + Style="{DynamicResource SideControlCheckBox}" /> diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index d5259d497b8..c7b4baf2e3b 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -57,16 +57,6 @@ private void OnLoaded(object sender, RoutedEventArgs e) hwndTarget.RenderMode = RenderMode.SoftwareOnly; } - private void OnAutoStartupChecked(object sender, RoutedEventArgs e) - { - viewModel.SetStartup(); - } - - private void OnAutoStartupUncheck(object sender, RoutedEventArgs e) - { - viewModel.RemoveStartup(); - } - private void OnSelectPythonDirectoryClick(object sender, RoutedEventArgs e) { var dlg = new FolderBrowserDialog diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index 587349045f4..892bc6ee239 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -64,6 +64,27 @@ public bool AutoUpdates } } + public bool StartFlowLauncherOnSystemStartup + { + get => Settings.StartFlowLauncherOnSystemStartup; + set + { + Settings.StartFlowLauncherOnSystemStartup = value; + + try + { + if (value) + AutoStartup.Enable(); + else + AutoStartup.Disable(); + } + catch (Exception e) + { + Notification.Show(InternationalizationManager.Instance.GetTranslation("setAutoStartFailed"), e.Message); + } + } + } + // This is only required to set at startup. When portable mode enabled/disabled a restart is always required private bool _portableMode = DataLocation.PortableDataLocationInUse(); public bool PortableMode @@ -216,36 +237,6 @@ public string TestProxy() #endregion - #region startup - - public void SetStartup() - { - try - { - AutoStartup.Enable(); - } - catch (Exception e) - { - Notification.Show(InternationalizationManager.Instance.GetTranslation("registerAutoStartFailed"), e.Message); - } - } - - public void RemoveStartup() - { - if (AutoStartup.IsEnabled) - { - try - { - AutoStartup.Disable(); - } - catch (Exception e) - { - Notification.Show(InternationalizationManager.Instance.GetTranslation("deregisterAutoStartFailed"), e.Message); - } - } - } - #endregion - #region plugin public static string Plugin => @"https://github.com/Flow-Launcher/Flow.Launcher.PluginsManifest"; From ae177a365f3018907d155316d3df29f945059d68 Mon Sep 17 00:00:00 2001 From: Oren Nachman Date: Sun, 7 Aug 2022 20:00:54 -0700 Subject: [PATCH 6/6] Remove unneeded changes from merge --- Flow.Launcher/ViewModel/SettingWindowViewModel.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index 719d298f87b..a63e54f3b0a 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -62,10 +62,6 @@ public bool AutoUpdates if (value) { UpdateApp(); - SetStartup(); - } else - { - RemoveStartup(); } } }