From c557031ef169b2edea219deeca4d8cefaccc13e6 Mon Sep 17 00:00:00 2001 From: Oren Nachman Date: Sun, 31 Jul 2022 16:28:03 -0700 Subject: [PATCH] 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 755d206d5..228ec7ba2 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -106,9 +106,21 @@ namespace Flow.Launcher 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 816adfaac..956324020 100644 --- a/Flow.Launcher/Helper/AutoStartup.cs +++ b/Flow.Launcher/Helper/AutoStartup.cs @@ -25,7 +25,7 @@ namespace Flow.Launcher.Helper } 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 @@ namespace Flow.Launcher.Helper } 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 @@ namespace Flow.Launcher.Helper } 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 a67894e97..988e63bea 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 e83c5bf6c..5b78f3a85 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 6ec3bb4ef..544f9e41c 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 302b932a0..b76650027 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 a2ff40eee..4a8767a01 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 1fc24ee11..a5708522f 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 42ad82b7d..11f0c7f5c 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 b4e687035..5b542a0a3 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 094985b3a..aae4322a3 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 859ec20a0..525591998 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 d85ab98da..48180910f 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 715e934d5..d56e26149 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 8868af59d..1993e101b 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 ff69d2965..34759ddb4 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 1e2847a55..8542b4050 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 55fa3b02d..4adc04edb 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 1ce0f3f45..aadd51bd9 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 0515e3e67..73234d825 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 3318cdc14..613d1ccf8 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 b7e9525ab..6fd01d2ba 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 5dee1cc75..61adffdf8 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 27a51e23e..e7d65fa52 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 3f5565eeb..57c1e88f2 100644 --- a/Flow.Launcher/Notification.cs +++ b/Flow.Launcher/Notification.cs @@ -18,7 +18,7 @@ namespace Flow.Launcher } [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 @@ namespace Flow.Launcher msg.Show(title, subTitle, iconPath); } } -} \ No newline at end of file +} diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs index 81f7a2389..e698ae597 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 @@ namespace Flow.Launcher #endregion } -} \ No newline at end of file +} diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index fbcea504e..ab0e67519 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 @@ namespace Flow.Launcher.ViewModel { Notification.Show( InternationalizationManager.Instance.GetTranslation("success"), - InternationalizationManager.Instance.GetTranslation("completedSuccessfully"), - ""); + InternationalizationManager.Instance.GetTranslation("completedSuccessfully") + ); })) .ConfigureAwait(false); }); @@ -927,4 +927,4 @@ namespace Flow.Launcher.ViewModel #endregion } -} \ No newline at end of file +} diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index faa41c0f6..587349045 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -220,12 +220,29 @@ namespace Flow.Launcher.ViewModel 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