Code cleanup and minor fixes

- Fixed channel arg not being set when launching game client
 - Fixed preferences tooltip hiding too early
 - Fixed last deploy info not showing for the right channel
 - Last deploy info now shows deploy timestamp according to system timezone
This commit is contained in:
pizzaboxer 2022-08-27 13:41:15 +01:00
parent ff2bd474df
commit 8316c9ec72
16 changed files with 177 additions and 146 deletions

View File

@ -9,8 +9,8 @@
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<Platforms>AnyCPU;x86</Platforms> <Platforms>AnyCPU;x86</Platforms>
<ApplicationIcon>Bloxstrap.ico</ApplicationIcon> <ApplicationIcon>Bloxstrap.ico</ApplicationIcon>
<Version>1.4.0</Version> <Version>1.4.1</Version>
<FileVersion>1.4.0.0</FileVersion> <FileVersion>1.4.1.0</FileVersion>
<UseWPF>True</UseWPF> <UseWPF>True</UseWPF>
</PropertyGroup> </PropertyGroup>

View File

@ -83,40 +83,14 @@ namespace Bloxstrap
#endregion #endregion
#region Core #region Core
public Bootstrapper() public Bootstrapper(string? launchCommandLine = null)
{ {
LaunchCommandLine = launchCommandLine;
FreshInstall = String.IsNullOrEmpty(Program.Settings.VersionGuid); FreshInstall = String.IsNullOrEmpty(Program.Settings.VersionGuid);
Client.Timeout = TimeSpan.FromMinutes(10); Client.Timeout = TimeSpan.FromMinutes(10);
} }
public void Initialize(string? launchCommandLine = null) // this is called from BootstrapperStyleForm.SetupDialog()
{
LaunchCommandLine = launchCommandLine;
switch (Program.Settings.BootstrapperStyle)
{
case BootstrapperStyle.VistaDialog:
Application.Run(new VistaDialog(this));
break;
case BootstrapperStyle.LegacyDialog2009:
Application.Run(new LegacyDialog2009(this));
break;
case BootstrapperStyle.LegacyDialog2011:
Application.Run(new LegacyDialog2011(this));
break;
case BootstrapperStyle.ProgressDialog:
Application.Run(new ProgressDialog(this));
break;
case BootstrapperStyle.ProgressDialogDark:
Application.Run(new ProgressDialogDark(this));
break;
}
}
public async Task Run() public async Task Run()
{ {
if (LaunchCommandLine == "-uninstall") if (LaunchCommandLine == "-uninstall")
@ -183,7 +157,12 @@ namespace Bloxstrap
Dialog.Message = "Starting Roblox..."; Dialog.Message = "Starting Roblox...";
// launch time isn't really required for all launches, but it's usually just safest to do this // launch time isn't really required for all launches, but it's usually just safest to do this
LaunchCommandLine += " --launchtime=" + DateTimeOffset.Now.ToUnixTimeSeconds() + " -startEvent " + startEventName; LaunchCommandLine += " --launchtime=" + DateTimeOffset.Now.ToUnixTimeSeconds();
if (Program.Settings.Channel.ToLower() != DeployManager.DefaultChannel.ToLower())
LaunchCommandLine += " -channel " + Program.Settings.Channel.ToLower();
LaunchCommandLine += " -startEvent " + startEventName;
using (SystemEvent startEvent = new(startEventName)) using (SystemEvent startEvent = new(startEventName))
{ {
@ -400,8 +379,10 @@ namespace Bloxstrap
Dialog.CancelEnabled = true; Dialog.CancelEnabled = true;
// i believe the original bootstrapper bases the progress bar off zip // i believe the bootstrapper bases the progress bar off
// extraction progress, but here i'm doing package download progress // bytes downloaded / bytes total according to rbxPkgManifest?
// i'm too lazy for that, so here it's just based off how many packages
// have finished downloading
Dialog.ProgressStyle = ProgressBarStyle.Continuous; Dialog.ProgressStyle = ProgressBarStyle.Continuous;
@ -411,7 +392,7 @@ namespace Bloxstrap
foreach (Package package in VersionPackageManifest) foreach (Package package in VersionPackageManifest)
{ {
// no await, download all the packages at once // download all the packages at once
DownloadPackage(package); DownloadPackage(package);
} }
@ -430,6 +411,8 @@ namespace Bloxstrap
Debug.WriteLine("Finished downloading"); Debug.WriteLine("Finished downloading");
Dialog.Message = "Configuring Roblox...";
Directory.CreateDirectory(Directories.Versions); Directory.CreateDirectory(Directories.Versions);
foreach (Package package in VersionPackageManifest) foreach (Package package in VersionPackageManifest)
@ -440,8 +423,6 @@ namespace Bloxstrap
Debug.WriteLine("Finished extracting packages"); Debug.WriteLine("Finished extracting packages");
Dialog.Message = "Configuring Roblox...";
string appSettingsLocation = Path.Combine(VersionFolder, "AppSettings.xml"); string appSettingsLocation = Path.Combine(VersionFolder, "AppSettings.xml");
await File.WriteAllTextAsync(appSettingsLocation, AppSettings); await File.WriteAllTextAsync(appSettingsLocation, AppSettings);
@ -529,7 +510,8 @@ namespace Bloxstrap
File.Copy(fileModFolder, fileVersionFolder, true); File.Copy(fileModFolder, fileVersionFolder, true);
} }
// now we check for files that have been deleted from the mod folder // now check for files that have been deleted from the mod folder
// according to the manifest
foreach (string fileLocation in manifestFiles) foreach (string fileLocation in manifestFiles)
{ {
if (modFolderFiles.Contains(fileLocation)) if (modFolderFiles.Contains(fileLocation))

View File

@ -1,5 +1,4 @@
using Bloxstrap.Helpers; using Bloxstrap.Enums;
using Bloxstrap.Helpers.RSMM;
namespace Bloxstrap.Dialogs.BootstrapperStyles namespace Bloxstrap.Dialogs.BootstrapperStyles
{ {
@ -18,7 +17,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
set set
{ {
if (this.InvokeRequired) if (this.InvokeRequired)
this.Invoke(new Action(() => { _message = value; })); this.Invoke(() => _message = value);
else else
_message = value; _message = value;
} }
@ -30,7 +29,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
set set
{ {
if (this.InvokeRequired) if (this.InvokeRequired)
this.Invoke(new Action(() => { _progressStyle = value; })); this.Invoke(() => _progressStyle = value);
else else
_progressStyle = value; _progressStyle = value;
} }
@ -42,7 +41,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
set set
{ {
if (this.InvokeRequired) if (this.InvokeRequired)
this.Invoke(new Action(() => { _progressValue = value; })); this.Invoke(() => _progressValue = value);
else else
_progressValue = value; _progressValue = value;
} }
@ -54,7 +53,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
set set
{ {
if (this.InvokeRequired) if (this.InvokeRequired)
this.Invoke(new Action(() => { _cancelEnabled = value; })); this.Invoke(() => _cancelEnabled = value);
else else
_cancelEnabled = value; _cancelEnabled = value;
} }
@ -63,7 +62,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
public void SetupDialog() public void SetupDialog()
{ {
this.Text = Program.ProjectName; this.Text = Program.ProjectName;
this.Icon = IconManager.GetIconResource(); this.Icon = Program.Settings.BootstrapperIcon.GetIcon();
if (Bootstrapper is null) if (Bootstrapper is null)
{ {

View File

@ -1,4 +1,4 @@
using Bloxstrap.Helpers; using Bloxstrap.Enums;
namespace Bloxstrap.Dialogs.BootstrapperStyles namespace Bloxstrap.Dialogs.BootstrapperStyles
{ {
@ -37,7 +37,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
Bootstrapper = bootstrapper; Bootstrapper = bootstrapper;
// have to convert icon -> bitmap since winforms scaling is poop // have to convert icon -> bitmap since winforms scaling is poop
this.IconBox.Image = IconManager.GetIconResource().ToBitmap(); this.IconBox.Image = Program.Settings.BootstrapperIcon.GetIcon().ToBitmap();
SetupDialog(); SetupDialog();
} }

View File

@ -1,4 +1,4 @@
using Bloxstrap.Helpers; using Bloxstrap.Enums;
namespace Bloxstrap.Dialogs.BootstrapperStyles namespace Bloxstrap.Dialogs.BootstrapperStyles
{ {
@ -36,7 +36,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
Bootstrapper = bootstrapper; Bootstrapper = bootstrapper;
this.IconBox.BackgroundImage = IconManager.GetBitmapResource(); this.IconBox.BackgroundImage = Program.Settings.BootstrapperIcon.GetBitmap();
SetupDialog(); SetupDialog();
} }

View File

@ -1,4 +1,4 @@
using Bloxstrap.Helpers; using Bloxstrap.Enums;
namespace Bloxstrap.Dialogs.BootstrapperStyles namespace Bloxstrap.Dialogs.BootstrapperStyles
{ {
@ -36,7 +36,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
Bootstrapper = bootstrapper; Bootstrapper = bootstrapper;
this.IconBox.BackgroundImage = IconManager.GetBitmapResource(); this.IconBox.BackgroundImage = Program.Settings.BootstrapperIcon.GetBitmap();
SetupDialog(); SetupDialog();
} }

View File

@ -1,5 +1,4 @@
using Bloxstrap.Helpers; using Bloxstrap.Enums;
using Bloxstrap.Helpers.RSMM;
namespace Bloxstrap.Dialogs.BootstrapperStyles namespace Bloxstrap.Dialogs.BootstrapperStyles
{ {
@ -66,7 +65,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
Dialog = new TaskDialogPage() Dialog = new TaskDialogPage()
{ {
Icon = new TaskDialogIcon(IconManager.GetIconResource()), Icon = new TaskDialogIcon(Program.Settings.BootstrapperIcon.GetIcon()),
Caption = Program.ProjectName, Caption = Program.ProjectName,
Buttons = { TaskDialogButton.Cancel }, Buttons = { TaskDialogButton.Cancel },

View File

@ -467,6 +467,10 @@
// //
// InfoTooltip // InfoTooltip
// //
this.InfoTooltip.AutomaticDelay = 0;
this.InfoTooltip.AutoPopDelay = 16000;
this.InfoTooltip.InitialDelay = 500;
this.InfoTooltip.ReshowDelay = 82;
this.InfoTooltip.ShowAlways = true; this.InfoTooltip.ShowAlways = true;
this.InfoTooltip.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info; this.InfoTooltip.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
this.InfoTooltip.ToolTipTitle = "Information"; this.InfoTooltip.ToolTipTitle = "Information";

View File

@ -3,7 +3,6 @@ using System.Diagnostics;
using Microsoft.Win32; using Microsoft.Win32;
using Bloxstrap.Dialogs.BootstrapperStyles;
using Bloxstrap.Enums; using Bloxstrap.Enums;
using Bloxstrap.Helpers; using Bloxstrap.Helpers;
using Bloxstrap.Helpers.Integrations; using Bloxstrap.Helpers.Integrations;
@ -58,10 +57,12 @@ namespace Bloxstrap.Dialogs
VersionDeploy info = await DeployManager.GetLastDeploy(channel); VersionDeploy info = await DeployManager.GetLastDeploy(channel);
if (info.FileVersion is null || info.Date is null) if (info.FileVersion is null || info.Timestamp is null)
return; return;
ChannelInfo = $"Last deploy:\nv{info.FileVersion} @ {info.Date}"; string strTimestamp = info.Timestamp.Value.ToString("MM/dd/yyyy hh:mm:ss tt", Program.CultureFormat);
ChannelInfo = $"Last deploy:\nv{info.FileVersion} @ {strTimestamp}";
} }
public Preferences() public Preferences()
@ -200,30 +201,7 @@ namespace Bloxstrap.Dialogs
private void PreviewButton_Click(object sender, EventArgs e) private void PreviewButton_Click(object sender, EventArgs e)
{ {
this.Visible = false; this.Visible = false;
Program.Settings.BootstrapperStyle.Show();
switch (Program.Settings.BootstrapperStyle)
{
case BootstrapperStyle.VistaDialog:
new VistaDialog().ShowDialog();
break;
case BootstrapperStyle.LegacyDialog2009:
new LegacyDialog2009().ShowDialog();
break;
case BootstrapperStyle.LegacyDialog2011:
new LegacyDialog2011().ShowDialog();
break;
case BootstrapperStyle.ProgressDialog:
new ProgressDialog().ShowDialog();
break;
case BootstrapperStyle.ProgressDialogDark:
new ProgressDialogDark().ShowDialog();
break;
}
this.Visible = true; this.Visible = true;
} }
@ -246,7 +224,7 @@ namespace Bloxstrap.Dialogs
{ {
BootstrapperIcon icon = SelectableIcons[this.IconSelection.Text]; BootstrapperIcon icon = SelectableIcons[this.IconSelection.Text];
this.IconPreview.BackgroundImage = IconManager.GetBitmapResource(icon); this.IconPreview.BackgroundImage = icon.GetBitmap();
if (!this.Visible) if (!this.Visible)
return; return;
@ -304,12 +282,10 @@ namespace Bloxstrap.Dialogs
private void SelectChannel_SelectedValueChanged(object sender, EventArgs e) private void SelectChannel_SelectedValueChanged(object sender, EventArgs e)
{ {
Task.Run(() => GetChannelInfo(Program.Settings.Channel)); if (this.Visible)
if (!this.Visible)
return;
Program.Settings.Channel = this.SelectChannel.Text; Program.Settings.Channel = this.SelectChannel.Text;
Task.Run(() => GetChannelInfo(Program.Settings.Channel));
} }
private void ToggleCheckForUpdates_CheckedChanged(object sender, EventArgs e) private void ToggleCheckForUpdates_CheckedChanged(object sender, EventArgs e)

View File

@ -11,4 +11,69 @@
Icon2019, Icon2019,
Icon2022 Icon2022
} }
public static class BootstrapperIconEx
{
public static Icon GetIcon(this BootstrapperIcon icon)
{
switch (icon)
{
case BootstrapperIcon.Icon2009:
return Properties.Resources.Icon2009_ico;
case BootstrapperIcon.Icon2011:
return Properties.Resources.Icon2011_ico;
case BootstrapperIcon.IconEarly2015:
return Properties.Resources.IconEarly2015_ico;
case BootstrapperIcon.IconLate2015:
return Properties.Resources.IconLate2015_ico;
case BootstrapperIcon.Icon2017:
return Properties.Resources.Icon2017_ico;
case BootstrapperIcon.Icon2019:
return Properties.Resources.Icon2019_ico;
case BootstrapperIcon.Icon2022:
return Properties.Resources.Icon2022_ico;
case BootstrapperIcon.IconBloxstrap:
default:
return Properties.Resources.IconBloxstrap_ico;
}
}
public static Bitmap GetBitmap(this BootstrapperIcon icon)
{
switch (icon)
{
case BootstrapperIcon.Icon2009:
return Properties.Resources.Icon2009_png;
case BootstrapperIcon.Icon2011:
return Properties.Resources.Icon2011_png;
case BootstrapperIcon.IconEarly2015:
return Properties.Resources.IconEarly2015_png;
case BootstrapperIcon.IconLate2015:
return Properties.Resources.IconLate2015_png;
case BootstrapperIcon.Icon2017:
return Properties.Resources.Icon2017_png;
case BootstrapperIcon.Icon2019:
return Properties.Resources.Icon2019_png;
case BootstrapperIcon.Icon2022:
return Properties.Resources.Icon2022_png;
case BootstrapperIcon.IconBloxstrap:
default:
return Properties.Resources.IconBloxstrap_png;
}
}
}
} }

View File

@ -1,4 +1,6 @@
namespace Bloxstrap.Enums using Bloxstrap.Dialogs.BootstrapperStyles;
namespace Bloxstrap.Enums
{ {
public enum BootstrapperStyle public enum BootstrapperStyle
{ {
@ -8,4 +10,45 @@
ProgressDialog, ProgressDialog,
ProgressDialogDark, ProgressDialogDark,
} }
public static class BootstrapperStyleEx
{
public static void Show(this BootstrapperStyle bootstrapperStyle, Bootstrapper? bootstrapper = null)
{
Form dialog;
switch (bootstrapperStyle)
{
case BootstrapperStyle.VistaDialog:
dialog = new VistaDialog(bootstrapper);
break;
case BootstrapperStyle.LegacyDialog2009:
dialog = new LegacyDialog2009(bootstrapper);
break;
case BootstrapperStyle.LegacyDialog2011:
dialog = new LegacyDialog2011(bootstrapper);
break;
case BootstrapperStyle.ProgressDialog:
default:
dialog = new ProgressDialog(bootstrapper);
break;
case BootstrapperStyle.ProgressDialogDark:
dialog = new ProgressDialogDark(bootstrapper);
break;
}
if (bootstrapper is null)
{
dialog.ShowDialog();
}
else
{
Application.Run(dialog);
}
}
}
} }

View File

@ -1,4 +1,5 @@
using System.IO; using System.Globalization;
using System.IO;
using System.Net.Http; using System.Net.Http;
using Bloxstrap.Models; using Bloxstrap.Models;
@ -11,8 +12,7 @@ namespace Bloxstrap.Helpers
public const string DefaultBaseUrl = "https://setup.rbxcdn.com"; public const string DefaultBaseUrl = "https://setup.rbxcdn.com";
public static string BaseUrl { get; private set; } = DefaultBaseUrl; public static string BaseUrl { get; private set; } = DefaultBaseUrl;
public static readonly string DefaultChannel = "LIVE"; public const string DefaultChannel = "LIVE";
public static string Channel { set => BaseUrl = BuildBaseUrl(value); } public static string Channel { set => BaseUrl = BuildBaseUrl(value); }
// basically any channel that has had a deploy within the past month with a windowsplayer build // basically any channel that has had a deploy within the past month with a windowsplayer build
@ -124,13 +124,16 @@ namespace Bloxstrap.Helpers
// (last time they did so was may 2021 so we should be fine?) // (last time they did so was may 2021 so we should be fine?)
// example entry: 'New WindowsPlayer version-29fb7cdd06e84001 at 8/23/2022 2:07:27 PM, file version: 0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...' // example entry: 'New WindowsPlayer version-29fb7cdd06e84001 at 8/23/2022 2:07:27 PM, file version: 0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...'
// there's a proper way, and then there's the lazy way
// this here is the lazy way but it should just work™
lastDeploy = lastDeploy[18..]; // 'version-29fb7cdd06e84001 at 8/23/2022 2:07:27 PM, file version: 0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...' lastDeploy = lastDeploy[18..]; // 'version-29fb7cdd06e84001 at 8/23/2022 2:07:27 PM, file version: 0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...'
string versionGuid = lastDeploy[..lastDeploy.IndexOf(" at")]; // 'version-29fb7cdd06e84001' string versionGuid = lastDeploy[..lastDeploy.IndexOf(" at")]; // 'version-29fb7cdd06e84001'
lastDeploy = lastDeploy[(versionGuid.Length + 4)..]; // '8/23/2022 2:07:27 PM, file version: 0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...' lastDeploy = lastDeploy[(versionGuid.Length + 4)..]; // '8/23/2022 2:07:27 PM, file version: 0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...'
string date = lastDeploy[..lastDeploy.IndexOf(", file")]; // '8/23/2022 2:07:27 PM' string strTimestamp = lastDeploy[..lastDeploy.IndexOf(", file")]; // '8/23/2022 2:07:27 PM'
lastDeploy = lastDeploy[(date.Length + 16)..]; // '0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...' lastDeploy = lastDeploy[(strTimestamp.Length + 16)..]; // '0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...'
string fileVersion = ""; string fileVersion = "";
if (lastDeploy.Contains("git hash")) if (lastDeploy.Contains("git hash"))
@ -144,13 +147,17 @@ namespace Bloxstrap.Helpers
fileVersion = lastDeploy[..lastDeploy.IndexOf("...")]; // '0, 448, 0, 411122' fileVersion = lastDeploy[..lastDeploy.IndexOf("...")]; // '0, 448, 0, 411122'
} }
// deployment timestamps are UTC-5
strTimestamp += " -05";
DateTime dtTimestamp = DateTime.ParseExact(strTimestamp, "M/d/yyyy h:mm:ss tt zz", Program.CultureFormat).ToLocalTime();
// convert to traditional version format // convert to traditional version format
fileVersion = fileVersion.Replace(" ", "").Replace(',', '.'); fileVersion = fileVersion.Replace(" ", "").Replace(',', '.');
return new VersionDeploy return new VersionDeploy
{ {
VersionGuid = versionGuid, VersionGuid = versionGuid,
Date = date, Timestamp = dtTimestamp,
FileVersion = fileVersion FileVersion = fileVersion
}; };
} }

View File

@ -1,47 +0,0 @@
using Bloxstrap.Enums;
namespace Bloxstrap.Helpers
{
internal class IconManager
{
public static Icon GetIconResource()
{
return GetIconResource(Program.Settings.BootstrapperIcon);
}
public static Icon GetIconResource(BootstrapperIcon icon)
{
switch (icon)
{
case BootstrapperIcon.Icon2009: return Properties.Resources.Icon2009_ico;
case BootstrapperIcon.Icon2011: return Properties.Resources.Icon2011_ico;
case BootstrapperIcon.IconEarly2015: return Properties.Resources.IconEarly2015_ico;
case BootstrapperIcon.IconLate2015: return Properties.Resources.IconLate2015_ico;
case BootstrapperIcon.Icon2017: return Properties.Resources.Icon2017_ico;
case BootstrapperIcon.Icon2019: return Properties.Resources.Icon2019_ico;
case BootstrapperIcon.Icon2022: return Properties.Resources.Icon2022_ico;
case BootstrapperIcon.IconBloxstrap: default: return Properties.Resources.IconBloxstrap_ico;
}
}
public static Bitmap GetBitmapResource()
{
return GetBitmapResource(Program.Settings.BootstrapperIcon);
}
public static Bitmap GetBitmapResource(BootstrapperIcon icon)
{
switch (icon)
{
case BootstrapperIcon.Icon2009: return Properties.Resources.Icon2009_png;
case BootstrapperIcon.Icon2011: return Properties.Resources.Icon2011_png;
case BootstrapperIcon.IconEarly2015: return Properties.Resources.IconEarly2015_png;
case BootstrapperIcon.IconLate2015: return Properties.Resources.IconLate2015_png;
case BootstrapperIcon.Icon2017: return Properties.Resources.Icon2017_png;
case BootstrapperIcon.Icon2019: return Properties.Resources.Icon2019_png;
case BootstrapperIcon.Icon2022: return Properties.Resources.Icon2022_png;
case BootstrapperIcon.IconBloxstrap: default: return Properties.Resources.IconBloxstrap_png;
}
}
}
}

View File

@ -43,7 +43,7 @@ namespace Bloxstrap.Helpers
if (key == "channel") if (key == "channel")
{ {
if (val != Program.Settings.Channel) if (val.ToLower() != Program.Settings.Channel.ToLower())
{ {
DialogResult result = Program.ShowMessageBox( DialogResult result = Program.ShowMessageBox(
$"{Program.ProjectName} was launched with the Roblox build channel set to {val}, however your current preferred channel is {Program.Settings.Channel}.\n\n" + $"{Program.ProjectName} was launched with the Roblox build channel set to {val}, however your current preferred channel is {Program.Settings.Channel}.\n\n" +
@ -56,7 +56,7 @@ namespace Bloxstrap.Helpers
Program.Settings.Channel = val; Program.Settings.Channel = val;
} }
if (val == DeployManager.DefaultChannel) // we'll set the arg when launching
continue; continue;
} }

View File

@ -9,7 +9,7 @@ namespace Bloxstrap.Models
public class VersionDeploy public class VersionDeploy
{ {
public string? VersionGuid { get; set; } public string? VersionGuid { get; set; }
public string? Date { get; set; } public DateTime? Timestamp { get; set; }
public string? FileVersion { get; set; } public string? FileVersion { get; set; }
} }
} }

View File

@ -1,8 +1,10 @@
using System.Diagnostics; using System.Diagnostics;
using System.Globalization;
using System.IO; using System.IO;
using Microsoft.Win32; using Microsoft.Win32;
using Bloxstrap.Enums;
using Bloxstrap.Helpers; using Bloxstrap.Helpers;
using Bloxstrap.Models; using Bloxstrap.Models;
@ -11,6 +13,7 @@ namespace Bloxstrap
internal static class Program internal static class Program
{ {
public const StringComparison StringFormat = StringComparison.InvariantCulture; public const StringComparison StringFormat = StringComparison.InvariantCulture;
public static readonly CultureInfo CultureFormat = CultureInfo.InvariantCulture;
public const string ProjectName = "Bloxstrap"; public const string ProjectName = "Bloxstrap";
public const string ProjectRepository = "pizzaboxer/bloxstrap"; public const string ProjectRepository = "pizzaboxer/bloxstrap";
@ -126,7 +129,7 @@ namespace Bloxstrap
if (!String.IsNullOrEmpty(commandLine)) if (!String.IsNullOrEmpty(commandLine))
{ {
DeployManager.Channel = Settings.Channel; DeployManager.Channel = Settings.Channel;
new Bootstrapper().Initialize(commandLine); Settings.BootstrapperStyle.Show(new Bootstrapper(commandLine));
} }
SettingsManager.Save(); SettingsManager.Save();