bloxstrap/Bloxstrap/Helpers/Updater.cs
pizzaboxer 4050b1c2e6 bump version, browserTrackerId, update in temp
so turns out the browserTrackerId is actually necessary lol oops
2023-03-09 00:43:58 +00:00

71 lines
2.7 KiB
C#

using System;
using System.Diagnostics;
using System.IO;
using System.Windows;
using Bloxstrap.Enums;
using Bloxstrap.Views;
namespace Bloxstrap.Helpers
{
public class Updater
{
public static void CheckInstalledVersion()
{
if (Environment.ProcessPath is null || !File.Exists(Directories.Application) || Environment.ProcessPath == Directories.Application)
return;
// 2.0.0 downloads updates to <BaseFolder>/Updates so lol
bool isAutoUpgrade = Environment.ProcessPath.StartsWith(Path.Combine(Directories.Base, "Updates")) || Environment.ProcessPath.StartsWith(Path.Combine(Directories.LocalAppData, "Temp"));
// if downloaded version doesn't match, replace installed version with downloaded version
FileVersionInfo currentVersionInfo = FileVersionInfo.GetVersionInfo(Environment.ProcessPath);
FileVersionInfo installedVersionInfo = FileVersionInfo.GetVersionInfo(Directories.Application);
if (installedVersionInfo.ProductVersion == currentVersionInfo.ProductVersion)
return;
MessageBoxResult result;
// silently upgrade version if the command line flag is set or if we're launching from an auto update
if (App.IsUpgrade || isAutoUpgrade)
{
result = MessageBoxResult.Yes;
}
else
{
result = App.ShowMessageBox(
$"The version of {App.ProjectName} you've launched is different to the version you currently have installed.\nWould you like to upgrade your currently installed version?",
MessageBoxImage.Question,
MessageBoxButton.YesNo
);
}
if (result != MessageBoxResult.Yes)
return;
File.Delete(Directories.Application);
File.Copy(Environment.ProcessPath, Directories.Application);
Bootstrapper.Register();
// make people using progress dialog auto switch over to fluent on upgrade
if (App.Version == "2.0.0" && App.Settings.Prop.BootstrapperStyle == BootstrapperStyle.ProgressDialog)
App.Settings.Prop.BootstrapperStyle = BootstrapperStyle.FluentDialog;
if (App.IsQuiet || isAutoUpgrade)
return;
App.ShowMessageBox(
$"{App.ProjectName} has been updated to v{currentVersionInfo.ProductVersion}",
MessageBoxImage.Information,
MessageBoxButton.OK
);
//new Preferences().ShowDialog();
new MainWindow().ShowDialog();
App.Terminate();
}
}
}