Merge branch 'version-2.2.0' of https://github.com/pizzaboxer/bloxstrap into version-2.2.0

This commit is contained in:
pizzaboxer 2023-04-11 23:54:10 +02:00
commit 7281cbf54a
No known key found for this signature in database
GPG Key ID: 59D4A1DBAD0F2BA8
2 changed files with 157 additions and 152 deletions

View File

@ -3,7 +3,8 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Bloxstrap" xmlns:local="clr-namespace:Bloxstrap"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
ShutdownMode="OnExplicitShutdown"> ShutdownMode="OnExplicitShutdown"
DispatcherUnhandledException="GlobalExceptionHandler">
<Application.Resources> <Application.Resources>
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>

View File

@ -8,6 +8,8 @@ using System.Reflection;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Threading;
using Microsoft.Win32; using Microsoft.Win32;
using Bloxstrap.Dialogs; using Bloxstrap.Dialogs;
@ -77,35 +79,25 @@ namespace Bloxstrap
Logger.Initialize(Path.Combine(logdir, $"{ProjectName}_{timestamp}.log")); 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) protected override void OnStartup(StartupEventArgs e)
{ {
base.OnStartup(e); base.OnStartup(e);
Logger.WriteLine($"[App::OnStartup] Starting {ProjectName} v{Version}"); 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, // To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration. // see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize(); 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 // check if installed
using (RegistryKey? registryKey = Registry.CurrentUser.OpenSubKey($@"Software\{ProjectName}")) using (RegistryKey? registryKey = Registry.CurrentUser.OpenSubKey($@"Software\{ProjectName}"))
{ {
@ -192,9 +207,8 @@ namespace Bloxstrap
Settings.Load(); Settings.Load();
State.Load(); State.Load();
} }
#if !DEBUG #if !DEBUG
try
{
if (!IsUninstall && !IsFirstRun) if (!IsUninstall && !IsFirstRun)
Updater.CheckInstalledVersion(); Updater.CheckInstalledVersion();
#endif #endif
@ -308,6 +322,7 @@ namespace Bloxstrap
#else #else
var exception = t.Exception.InnerExceptions.Count >= 1 ? t.Exception.InnerExceptions[0] : t.Exception; var exception = t.Exception.InnerExceptions.Count >= 1 ? t.Exception.InnerExceptions[0] : t.Exception;
dialog?.ShowError($"{exception.GetType()}: {exception.Message}"); dialog?.ShowError($"{exception.GetType()}: {exception.Message}");
Terminate(Bootstrapper.ERROR_INSTALL_FAILURE);
#endif #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..."); Logger.WriteLine($"[App::OnStartup] Successfully reached end of main thread. Terminating...");