mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-19 00:51:30 -07:00
- Features - Added integration with rbxfpsunlocker - Added support for user-applicable mods - Added ability to disable auto-update checking - Misc - Removed Bloxstrap branding from Discord Rich Presence - Mod presets for old death sound and mouse cursor are now statically stored as base64 strings, eliminating reliance on the website and the old cursors still existing - Bugfixes - Fixed vista bootstrapper style not hiding properly and improper behavior when closed - Fixed forms not being brought to the front when shown - Code - Reconsolidated Bootstrapper to a single file, using regions instead of partials
87 lines
3.3 KiB
C#
87 lines
3.3 KiB
C#
using System.Diagnostics;
|
|
using System.IO;
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace Bloxstrap.Helpers
|
|
{
|
|
public class Updater
|
|
{
|
|
public static bool CheckInstalledVersion()
|
|
{
|
|
if (Environment.ProcessPath is null || !File.Exists(Directories.App) || Environment.ProcessPath == Directories.App)
|
|
return false;
|
|
|
|
// 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)
|
|
{
|
|
DialogResult result = MessageBox.Show(
|
|
$"The version of {Program.ProjectName} you've launched is newer than the version you currently have installed.\nWould you like to update your currently installed version?",
|
|
Program.ProjectName,
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Question
|
|
);
|
|
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
File.Delete(Directories.App);
|
|
File.Copy(Environment.ProcessPath, Directories.App);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static async Task Check()
|
|
{
|
|
if (Environment.ProcessPath is null)
|
|
return;
|
|
|
|
if (!Program.IsFirstRun && CheckInstalledVersion())
|
|
return;
|
|
|
|
if (!Program.Settings.CheckForUpdates)
|
|
return;
|
|
|
|
FileVersionInfo currentVersionInfo = FileVersionInfo.GetVersionInfo(Environment.ProcessPath);
|
|
string currentVersion = $"Bloxstrap v{currentVersionInfo.ProductVersion}";
|
|
string latestVersion;
|
|
string releaseNotes;
|
|
|
|
// get the latest version according to the latest github release info
|
|
// it should contain the latest product version, which we can check against
|
|
try
|
|
{
|
|
JObject releaseInfo = await Utilities.GetJson($"https://api.github.com/repos/{Program.ProjectRepository}/releases/latest");
|
|
|
|
latestVersion = releaseInfo["name"].Value<string>();
|
|
releaseNotes = releaseInfo["body"].Value<string>();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Debug.WriteLine($"Failed to fetch latest version info! ({ex.Message})");
|
|
return;
|
|
}
|
|
|
|
if (currentVersion != latestVersion)
|
|
{
|
|
DialogResult result = MessageBox.Show(
|
|
$"A new version of {Program.ProjectName} is available\n\n[{latestVersion}]\n{releaseNotes}\n\nWould you like to download it?",
|
|
Program.ProjectName,
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Question
|
|
);
|
|
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
Utilities.OpenWebsite($"https://github.com/{Program.ProjectRepository}/releases/latest");
|
|
Program.Exit();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |