mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
Merge pull request #127 from pizzaboxer/bugfix-124
Add proper global exception handling
This commit is contained in:
commit
48de954eb0
@ -3,7 +3,8 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:Bloxstrap"
|
||||
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
|
||||
ShutdownMode="OnExplicitShutdown">
|
||||
ShutdownMode="OnExplicitShutdown"
|
||||
DispatcherUnhandledException="GlobalExceptionHandler">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
|
@ -8,6 +8,8 @@ using System.Reflection;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
|
||||
using Microsoft.Win32;
|
||||
|
||||
using Bloxstrap.Dialogs;
|
||||
@ -77,35 +79,25 @@ namespace Bloxstrap
|
||||
Logger.Initialize(Path.Combine(logdir, $"{ProjectName}_{timestamp}.log"));
|
||||
}
|
||||
|
||||
void GlobalExceptionHandler(object sender, DispatcherUnhandledExceptionEventArgs e)
|
||||
{
|
||||
e.Handled = true;
|
||||
|
||||
Logger.WriteLine("[App::OnStartup] An exception occurred when running the main thread");
|
||||
Logger.WriteLine($"[App::OnStartup] {e.Exception}");
|
||||
|
||||
if (!IsQuiet)
|
||||
Settings.Prop.BootstrapperStyle.GetNew().ShowError($"{e.Exception.GetType()}: {e.Exception.Message}");
|
||||
|
||||
Terminate(Bootstrapper.ERROR_INSTALL_FAILURE);
|
||||
}
|
||||
|
||||
protected override void OnStartup(StartupEventArgs e)
|
||||
{
|
||||
base.OnStartup(e);
|
||||
|
||||
Logger.WriteLine($"[App::OnStartup] Starting {ProjectName} v{Version}");
|
||||
|
||||
// todo: remove this once 32-bit support is fully gone
|
||||
if (!App.IsQuiet && !Environment.Is64BitOperatingSystem)
|
||||
{
|
||||
string message = "In the near future, Roblox will no longer support 32-bit Windows devices. To keep playing Roblox, please use a device that is 64-bit compatible.";
|
||||
|
||||
// check if the processor actually supports 64-bit with wmic
|
||||
// chances are the user just has a 32-bit version of windows installed on 64-bit hardware
|
||||
Process p = new();
|
||||
p.StartInfo.CreateNoWindow = true;
|
||||
p.StartInfo.UseShellExecute = false;
|
||||
p.StartInfo.RedirectStandardOutput = true;
|
||||
p.StartInfo.FileName = "wmic.exe";
|
||||
p.StartInfo.Arguments = "cpu get Architecture";
|
||||
p.Start();
|
||||
|
||||
// https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-processor
|
||||
// architecture type 9 is x64
|
||||
if (p.StandardOutput.ReadToEnd().Contains('9'))
|
||||
message += "\n\nYour computer is running a 32-bit version of Windows but is actually 64-bit compatible. Search online for how to upgrade to a 64-bit version of Windows.";
|
||||
|
||||
ShowMessageBox(message, MessageBoxImage.Warning);
|
||||
}
|
||||
|
||||
// To customize application configuration such as set high DPI settings or default font,
|
||||
// see https://aka.ms/applicationconfiguration.
|
||||
ApplicationConfiguration.Initialize();
|
||||
@ -148,6 +140,29 @@ namespace Bloxstrap
|
||||
}
|
||||
}
|
||||
|
||||
// todo: remove this once 32-bit support is fully gone
|
||||
if (!App.IsQuiet && !Environment.Is64BitOperatingSystem)
|
||||
{
|
||||
string message = "In the near future, Roblox will no longer support 32-bit Windows devices. To keep playing Roblox, please use a device that is 64-bit compatible.";
|
||||
|
||||
// check if the processor actually supports 64-bit with wmic
|
||||
// chances are the user just has a 32-bit version of windows installed on 64-bit hardware
|
||||
Process p = new();
|
||||
p.StartInfo.CreateNoWindow = true;
|
||||
p.StartInfo.UseShellExecute = false;
|
||||
p.StartInfo.RedirectStandardOutput = true;
|
||||
p.StartInfo.FileName = "wmic.exe";
|
||||
p.StartInfo.Arguments = "cpu get Architecture";
|
||||
p.Start();
|
||||
|
||||
// https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-processor
|
||||
// architecture type 9 is x64
|
||||
if (p.StandardOutput.ReadToEnd().Contains('9'))
|
||||
message += "\n\nYour computer is running a 32-bit version of Windows but is actually 64-bit compatible. Search online for how to upgrade to a 64-bit version of Windows.";
|
||||
|
||||
ShowMessageBox(message, MessageBoxImage.Warning);
|
||||
}
|
||||
|
||||
// check if installed
|
||||
using (RegistryKey? registryKey = Registry.CurrentUser.OpenSubKey($@"Software\{ProjectName}"))
|
||||
{
|
||||
@ -192,9 +207,8 @@ namespace Bloxstrap
|
||||
Settings.Load();
|
||||
State.Load();
|
||||
}
|
||||
|
||||
#if !DEBUG
|
||||
try
|
||||
{
|
||||
if (!IsUninstall && !IsFirstRun)
|
||||
Updater.CheckInstalledVersion();
|
||||
#endif
|
||||
@ -308,6 +322,7 @@ namespace Bloxstrap
|
||||
#else
|
||||
var exception = t.Exception.InnerExceptions.Count >= 1 ? t.Exception.InnerExceptions[0] : t.Exception;
|
||||
dialog?.ShowError($"{exception.GetType()}: {exception.Message}");
|
||||
Terminate(Bootstrapper.ERROR_INSTALL_FAILURE);
|
||||
#endif
|
||||
});
|
||||
|
||||
@ -326,17 +341,6 @@ namespace Bloxstrap
|
||||
}
|
||||
}
|
||||
}
|
||||
#if !DEBUG
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine("[App::OnStartup] An exception occurred when running the main thread");
|
||||
Logger.WriteLine($"[App::OnStartup] {ex}");
|
||||
|
||||
if (!IsQuiet)
|
||||
Settings.Prop.BootstrapperStyle.GetNew().ShowError($"{ex.GetType()}: {ex.Message}");
|
||||
}
|
||||
#endif
|
||||
|
||||
Logger.WriteLine($"[App::OnStartup] Successfully reached end of main thread. Terminating...");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user