bloxstrap/Bloxstrap/Helpers/Updater.cs
pizzaboxer 83f37ee6c3 Rework Preferences menu and file modding
Adds help windows to the Preferences menu, reworked directory structure and allowed files in the root mod directory to be applied to the version folder.
2023-01-17 22:13:51 +00:00

63 lines
2.1 KiB
C#

using System.Diagnostics;
using System.IO;
using Bloxstrap.Dialogs.Menu;
namespace Bloxstrap.Helpers
{
public class Updater
{
public static void CheckInstalledVersion()
{
if (Environment.ProcessPath is null || !File.Exists(Directories.App) || Environment.ProcessPath == Directories.App)
return;
bool isAutoUpgrade = Environment.ProcessPath.StartsWith(Directories.Updates);
// if downloaded version doesn't match, replace installed version with downloaded version
FileVersionInfo currentVersionInfo = FileVersionInfo.GetVersionInfo(Environment.ProcessPath);
FileVersionInfo installedVersionInfo = FileVersionInfo.GetVersionInfo(Directories.App);
if (installedVersionInfo.ProductVersion == currentVersionInfo.ProductVersion)
return;
DialogResult result;
// silently upgrade version if the command line flag is set or if we're launching from an auto update
if (Program.IsUpgrade || isAutoUpgrade)
{
result = DialogResult.Yes;
}
else
{
result = Program.ShowMessageBox(
$"The version of {Program.ProjectName} you've launched is different to the version you currently have installed.\nWould you like to upgrade your currently installed version?",
MessageBoxIcon.Question,
MessageBoxButtons.YesNo
);
}
if (result != DialogResult.Yes)
return;
File.Delete(Directories.App);
File.Copy(Environment.ProcessPath, Directories.App);
Bootstrapper.Register();
if (Program.IsQuiet || isAutoUpgrade)
return;
Program.ShowMessageBox(
$"{Program.ProjectName} has been updated to v{currentVersionInfo.ProductVersion}",
MessageBoxIcon.Information,
MessageBoxButtons.OK
);
new Preferences().ShowDialog();
Program.Exit();
}
}
}