diff --git a/Bloxstrap/App.xaml.cs b/Bloxstrap/App.xaml.cs index 0540e9d..5460f58 100644 --- a/Bloxstrap/App.xaml.cs +++ b/Bloxstrap/App.xaml.cs @@ -204,13 +204,13 @@ namespace Bloxstrap if (!IsFirstRun) ShouldSaveConfigs = true; - if (Mutex.TryOpenExisting("ROBLOX_singletonMutex", out var _)) + if (Settings.Prop.ConfirmLaunches && Mutex.TryOpenExisting("ROBLOX_singletonMutex", out var _)) { - var result = Frontend.ShowMessageBox( - "Roblox is currently running, and launching another instance will close it. Are you sure you want to continue launching?", - MessageBoxImage.Warning, - MessageBoxButton.YesNo - ); + // this currently doesn't work very well since it relies on checking the existence of the singleton mutex + // which often hangs around for a few seconds after the window closes + // it would be better to have this rely on the activity tracker when we implement IPC in the planned refactoring + + var result = Frontend.ShowMessageBox(Bloxstrap.Resources.Strings.Bootstrapper_ConfirmLaunch, MessageBoxImage.Warning, MessageBoxButton.YesNo); if (result != MessageBoxResult.Yes) { diff --git a/Bloxstrap/Models/Settings.cs b/Bloxstrap/Models/Settings.cs index 79bac69..9c6b082 100644 --- a/Bloxstrap/Models/Settings.cs +++ b/Bloxstrap/Models/Settings.cs @@ -12,6 +12,7 @@ namespace Bloxstrap.Models public Theme Theme { get; set; } = Theme.Default; public bool CheckForUpdates { get; set; } = true; public bool CreateDesktopIcon { get; set; } = true; + public bool ConfirmLaunches { get; set; } = false; // channel configuration public string Channel { get; set; } = RobloxDeployment.DefaultChannel; diff --git a/Bloxstrap/Resources/Strings.Designer.cs b/Bloxstrap/Resources/Strings.Designer.cs index 9dbc005..d8d9154 100644 --- a/Bloxstrap/Resources/Strings.Designer.cs +++ b/Bloxstrap/Resources/Strings.Designer.cs @@ -87,6 +87,15 @@ namespace Bloxstrap.Resources { } } + /// + /// Looks up a localized string similar to Roblox is currently running, and launching another instance will close it. Are you sure you want to continue launching?. + /// + public static string Bootstrapper_ConfirmLaunch { + get { + return ResourceManager.GetString("Bootstrapper.ConfirmLaunch", resourceCulture); + } + } + /// /// Looks up a localized string similar to It's possible that something is preventing Bloxstrap from connecting to the internet. Please check and try again.. /// @@ -1634,6 +1643,24 @@ namespace Bloxstrap.Resources { } } + /// + /// Looks up a localized string similar to Prevent against closures of your existing game from accidentally launching another one.. + /// + public static string Menu_Behaviour_ConfirmLaunches_Description { + get { + return ResourceManager.GetString("Menu.Behaviour.ConfirmLaunches.Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prompt to confirm when launching another Roblox instance. + /// + public static string Menu_Behaviour_ConfirmLaunches_Title { + get { + return ResourceManager.GetString("Menu.Behaviour.ConfirmLaunches.Title", resourceCulture); + } + } + /// /// Looks up a localized string similar to Bloxstrap will place an icon on the desktop that launches Roblox the next time it launches.. /// diff --git a/Bloxstrap/Resources/Strings.resx b/Bloxstrap/Resources/Strings.resx index 77a7489..1e06c17 100644 --- a/Bloxstrap/Resources/Strings.resx +++ b/Bloxstrap/Resources/Strings.resx @@ -126,6 +126,9 @@ Bloxstrap was unable to auto-update to {0}. Please update it manually by downloading and running the latest release from the GitHub page. + + Roblox is currently running, and launching another instance will close it. Are you sure you want to continue launching? + It's possible that something is preventing Bloxstrap from connecting to the internet. Please check and try again. @@ -650,6 +653,12 @@ Would you like to upgrade your currently installed version? Automatically update Bloxstrap + + Prevent against closures of your existing game from accidentally launching another one. + + + Prompt to confirm when launching another Roblox instance + Bloxstrap will place an icon on the desktop that launches Roblox the next time it launches. diff --git a/Bloxstrap/UI/Elements/Menu/Pages/BehaviourPage.xaml b/Bloxstrap/UI/Elements/Menu/Pages/BehaviourPage.xaml index e9dcca8..9af6d43 100644 --- a/Bloxstrap/UI/Elements/Menu/Pages/BehaviourPage.xaml +++ b/Bloxstrap/UI/Elements/Menu/Pages/BehaviourPage.xaml @@ -43,5 +43,11 @@ + + + + diff --git a/Bloxstrap/UI/ViewModels/Menu/BehaviourViewModel.cs b/Bloxstrap/UI/ViewModels/Menu/BehaviourViewModel.cs index 77040f2..00c286a 100644 --- a/Bloxstrap/UI/ViewModels/Menu/BehaviourViewModel.cs +++ b/Bloxstrap/UI/ViewModels/Menu/BehaviourViewModel.cs @@ -17,6 +17,12 @@ set => App.Settings.Prop.CheckForUpdates = value; } + public bool ConfirmLaunches + { + get => App.Settings.Prop.ConfirmLaunches; + set => App.Settings.Prop.ConfirmLaunches = value; + } + public bool ForceRobloxReinstallation { // wouldnt it be better to check old version guids?