mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
v1.4.0: Build channel support, use rbxcdn, cleanup
thanks clonetrooper for reminding me rbxcdn exists - don't know why i used s3 directly since it's so much slower
This commit is contained in:
parent
4c0e7f5896
commit
0a2382d590
@ -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.3.0</Version>
|
<Version>1.4.0</Version>
|
||||||
<FileVersion>1.3.0.0</FileVersion>
|
<FileVersion>1.4.0.0</FileVersion>
|
||||||
<UseWPF>True</UseWPF>
|
<UseWPF>True</UseWPF>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
@ -89,11 +89,11 @@ namespace Bloxstrap
|
|||||||
Client.Timeout = TimeSpan.FromMinutes(10);
|
Client.Timeout = TimeSpan.FromMinutes(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialize(BootstrapperStyle bootstrapperStyle, string? launchCommandLine = null)
|
public void Initialize(string? launchCommandLine = null)
|
||||||
{
|
{
|
||||||
LaunchCommandLine = launchCommandLine;
|
LaunchCommandLine = launchCommandLine;
|
||||||
|
|
||||||
switch (bootstrapperStyle)
|
switch (Program.Settings.BootstrapperStyle)
|
||||||
{
|
{
|
||||||
case BootstrapperStyle.VistaDialog:
|
case BootstrapperStyle.VistaDialog:
|
||||||
Application.Run(new VistaDialog(this));
|
Application.Run(new VistaDialog(this));
|
||||||
@ -128,12 +128,7 @@ namespace Bloxstrap
|
|||||||
await CheckLatestVersion();
|
await CheckLatestVersion();
|
||||||
|
|
||||||
if (!Directory.Exists(VersionFolder) || Program.Settings.VersionGuid != VersionGuid)
|
if (!Directory.Exists(VersionFolder) || Program.Settings.VersionGuid != VersionGuid)
|
||||||
{
|
|
||||||
Debug.WriteLineIf(!Directory.Exists(VersionFolder), $"Installing latest version (!Directory.Exists({VersionFolder}))");
|
|
||||||
Debug.WriteLineIf(Program.Settings.VersionGuid != VersionGuid, $"Installing latest version ({Program.Settings.VersionGuid} != {VersionGuid})");
|
|
||||||
|
|
||||||
await InstallLatestVersion();
|
await InstallLatestVersion();
|
||||||
}
|
|
||||||
|
|
||||||
ApplyModifications();
|
ApplyModifications();
|
||||||
|
|
||||||
@ -156,7 +151,7 @@ namespace Bloxstrap
|
|||||||
{
|
{
|
||||||
Dialog.Message = "Connecting to Roblox...";
|
Dialog.Message = "Connecting to Roblox...";
|
||||||
|
|
||||||
VersionGuid = await Client.GetStringAsync($"{Program.BaseUrlSetup}/version");
|
VersionGuid = await Client.GetStringAsync($"{DeployManager.BaseUrl}/version");
|
||||||
VersionFolder = Path.Combine(Directories.Versions, VersionGuid);
|
VersionFolder = Path.Combine(Directories.Versions, VersionGuid);
|
||||||
VersionPackageManifest = await PackageManifest.Get(VersionGuid);
|
VersionPackageManifest = await PackageManifest.Get(VersionGuid);
|
||||||
}
|
}
|
||||||
@ -587,7 +582,7 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
private async void DownloadPackage(Package package)
|
private async void DownloadPackage(Package package)
|
||||||
{
|
{
|
||||||
string packageUrl = $"{Program.BaseUrlSetup}/{VersionGuid}-{package.Name}";
|
string packageUrl = $"{DeployManager.BaseUrl}/{VersionGuid}-{package.Name}";
|
||||||
string packageLocation = Path.Combine(Directories.Downloads, package.Signature);
|
string packageLocation = Path.Combine(Directories.Downloads, package.Signature);
|
||||||
string robloxPackageLocation = Path.Combine(Program.LocalAppData, "Roblox", "Downloads", package.Signature);
|
string robloxPackageLocation = Path.Combine(Program.LocalAppData, "Roblox", "Downloads", package.Signature);
|
||||||
|
|
||||||
|
@ -97,25 +97,13 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
|
|
||||||
public virtual void ShowSuccess(string message)
|
public virtual void ShowSuccess(string message)
|
||||||
{
|
{
|
||||||
MessageBox.Show(
|
Program.ShowMessageBox(message, MessageBoxIcon.Information);
|
||||||
message,
|
|
||||||
Program.ProjectName,
|
|
||||||
MessageBoxButtons.OK,
|
|
||||||
MessageBoxIcon.Information
|
|
||||||
);
|
|
||||||
|
|
||||||
Program.Exit();
|
Program.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void ShowError(string message)
|
public virtual void ShowError(string message)
|
||||||
{
|
{
|
||||||
MessageBox.Show(
|
Program.ShowMessageBox($"An error occurred while starting Roblox\n\nDetails: {message}", MessageBoxIcon.Error);
|
||||||
$"An error occurred while starting Roblox\n\nDetails: {message}",
|
|
||||||
Program.ProjectName,
|
|
||||||
MessageBoxButtons.OK,
|
|
||||||
MessageBoxIcon.Error
|
|
||||||
);
|
|
||||||
|
|
||||||
Program.Exit();
|
Program.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,11 +117,10 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
|
|
||||||
public void PromptShutdown()
|
public void PromptShutdown()
|
||||||
{
|
{
|
||||||
DialogResult result = MessageBox.Show(
|
DialogResult result = Program.ShowMessageBox(
|
||||||
"Roblox is currently running, but needs to close. Would you like close Roblox now?",
|
"Roblox is currently running, but needs to close. Would you like close Roblox now?",
|
||||||
Program.ProjectName,
|
MessageBoxIcon.Information,
|
||||||
MessageBoxButtons.OKCancel,
|
MessageBoxButtons.OKCancel
|
||||||
MessageBoxIcon.Information
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (result != DialogResult.OK)
|
if (result != DialogResult.OK)
|
||||||
|
59
Bloxstrap/Dialogs/Preferences.Designer.cs
generated
59
Bloxstrap/Dialogs/Preferences.Designer.cs
generated
@ -45,6 +45,10 @@
|
|||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
this.StyleSelection = new System.Windows.Forms.ListBox();
|
this.StyleSelection = new System.Windows.Forms.ListBox();
|
||||||
this.InstallationTab = new System.Windows.Forms.TabPage();
|
this.InstallationTab = new System.Windows.Forms.TabPage();
|
||||||
|
this.groupBox6 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.ToggleShowAllChannels = new System.Windows.Forms.CheckBox();
|
||||||
|
this.LabelChannelInfo = new System.Windows.Forms.Label();
|
||||||
|
this.SelectChannel = new System.Windows.Forms.ComboBox();
|
||||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||||
this.LabelModFolderInstall = new System.Windows.Forms.Label();
|
this.LabelModFolderInstall = new System.Windows.Forms.Label();
|
||||||
this.ButtonOpenModFolder = new System.Windows.Forms.Button();
|
this.ButtonOpenModFolder = new System.Windows.Forms.Button();
|
||||||
@ -67,6 +71,7 @@
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.IconPreview)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.IconPreview)).BeginInit();
|
||||||
this.groupBox2.SuspendLayout();
|
this.groupBox2.SuspendLayout();
|
||||||
this.InstallationTab.SuspendLayout();
|
this.InstallationTab.SuspendLayout();
|
||||||
|
this.groupBox6.SuspendLayout();
|
||||||
this.groupBox4.SuspendLayout();
|
this.groupBox4.SuspendLayout();
|
||||||
this.GroupBoxInstallLocation.SuspendLayout();
|
this.GroupBoxInstallLocation.SuspendLayout();
|
||||||
this.panel1.SuspendLayout();
|
this.panel1.SuspendLayout();
|
||||||
@ -259,6 +264,7 @@
|
|||||||
//
|
//
|
||||||
// InstallationTab
|
// InstallationTab
|
||||||
//
|
//
|
||||||
|
this.InstallationTab.Controls.Add(this.groupBox6);
|
||||||
this.InstallationTab.Controls.Add(this.groupBox4);
|
this.InstallationTab.Controls.Add(this.groupBox4);
|
||||||
this.InstallationTab.Controls.Add(this.GroupBoxInstallLocation);
|
this.InstallationTab.Controls.Add(this.GroupBoxInstallLocation);
|
||||||
this.InstallationTab.Location = new System.Drawing.Point(4, 24);
|
this.InstallationTab.Location = new System.Drawing.Point(4, 24);
|
||||||
@ -269,6 +275,53 @@
|
|||||||
this.InstallationTab.Text = "Installation";
|
this.InstallationTab.Text = "Installation";
|
||||||
this.InstallationTab.UseVisualStyleBackColor = true;
|
this.InstallationTab.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// groupBox6
|
||||||
|
//
|
||||||
|
this.groupBox6.Controls.Add(this.ToggleShowAllChannels);
|
||||||
|
this.groupBox6.Controls.Add(this.LabelChannelInfo);
|
||||||
|
this.groupBox6.Controls.Add(this.SelectChannel);
|
||||||
|
this.groupBox6.Location = new System.Drawing.Point(5, 158);
|
||||||
|
this.groupBox6.Name = "groupBox6";
|
||||||
|
this.groupBox6.Size = new System.Drawing.Size(422, 56);
|
||||||
|
this.groupBox6.TabIndex = 3;
|
||||||
|
this.groupBox6.TabStop = false;
|
||||||
|
this.groupBox6.Text = "Build Channel";
|
||||||
|
//
|
||||||
|
// ToggleShowAllChannels
|
||||||
|
//
|
||||||
|
this.ToggleShowAllChannels.AutoSize = true;
|
||||||
|
this.ToggleShowAllChannels.BackColor = System.Drawing.Color.White;
|
||||||
|
this.ToggleShowAllChannels.Location = new System.Drawing.Point(289, 0);
|
||||||
|
this.ToggleShowAllChannels.Name = "ToggleShowAllChannels";
|
||||||
|
this.ToggleShowAllChannels.Padding = new System.Windows.Forms.Padding(7, 0, 0, 0);
|
||||||
|
this.ToggleShowAllChannels.Size = new System.Drawing.Size(127, 19);
|
||||||
|
this.ToggleShowAllChannels.TabIndex = 2;
|
||||||
|
this.ToggleShowAllChannels.Text = "Show all channels";
|
||||||
|
this.ToggleShowAllChannels.UseVisualStyleBackColor = false;
|
||||||
|
this.ToggleShowAllChannels.CheckedChanged += new System.EventHandler(this.ToggleShowAllChannels_CheckedChanged);
|
||||||
|
//
|
||||||
|
// LabelChannelInfo
|
||||||
|
//
|
||||||
|
this.LabelChannelInfo.Location = new System.Drawing.Point(134, 18);
|
||||||
|
this.LabelChannelInfo.Name = "LabelChannelInfo";
|
||||||
|
this.LabelChannelInfo.Size = new System.Drawing.Size(282, 28);
|
||||||
|
this.LabelChannelInfo.TabIndex = 1;
|
||||||
|
this.LabelChannelInfo.Text = "Getting latest deploy, please wait...";
|
||||||
|
this.LabelChannelInfo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
//
|
||||||
|
// SelectChannel
|
||||||
|
//
|
||||||
|
this.SelectChannel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.SelectChannel.DropDownWidth = 265;
|
||||||
|
this.SelectChannel.FormattingEnabled = true;
|
||||||
|
this.SelectChannel.Location = new System.Drawing.Point(9, 21);
|
||||||
|
this.SelectChannel.Name = "SelectChannel";
|
||||||
|
this.SelectChannel.Size = new System.Drawing.Size(120, 23);
|
||||||
|
this.SelectChannel.TabIndex = 0;
|
||||||
|
this.InfoTooltip.SetToolTip(this.SelectChannel, "Choose what deploy channel to use.\r\nThe default channel is LIVE.\r\nYou should only" +
|
||||||
|
" change this if you\'re know exactly what you\'re doing.\r\n");
|
||||||
|
this.SelectChannel.SelectedValueChanged += new System.EventHandler(this.SelectChannel_SelectedValueChanged);
|
||||||
|
//
|
||||||
// groupBox4
|
// groupBox4
|
||||||
//
|
//
|
||||||
this.groupBox4.Controls.Add(this.LabelModFolderInstall);
|
this.groupBox4.Controls.Add(this.LabelModFolderInstall);
|
||||||
@ -444,6 +497,8 @@
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.IconPreview)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.IconPreview)).EndInit();
|
||||||
this.groupBox2.ResumeLayout(false);
|
this.groupBox2.ResumeLayout(false);
|
||||||
this.InstallationTab.ResumeLayout(false);
|
this.InstallationTab.ResumeLayout(false);
|
||||||
|
this.groupBox6.ResumeLayout(false);
|
||||||
|
this.groupBox6.PerformLayout();
|
||||||
this.groupBox4.ResumeLayout(false);
|
this.groupBox4.ResumeLayout(false);
|
||||||
this.groupBox4.PerformLayout();
|
this.groupBox4.PerformLayout();
|
||||||
this.GroupBoxInstallLocation.ResumeLayout(false);
|
this.GroupBoxInstallLocation.ResumeLayout(false);
|
||||||
@ -486,5 +541,9 @@
|
|||||||
private CheckBox ToggleCheckForUpdates;
|
private CheckBox ToggleCheckForUpdates;
|
||||||
private Button ButtonOpenModFolder;
|
private Button ButtonOpenModFolder;
|
||||||
private Label LabelModFolderInstall;
|
private Label LabelModFolderInstall;
|
||||||
|
private GroupBox groupBox6;
|
||||||
|
private ComboBox SelectChannel;
|
||||||
|
private Label LabelChannelInfo;
|
||||||
|
private CheckBox ToggleShowAllChannels;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -7,11 +7,13 @@ using Bloxstrap.Dialogs.BootstrapperStyles;
|
|||||||
using Bloxstrap.Enums;
|
using Bloxstrap.Enums;
|
||||||
using Bloxstrap.Helpers;
|
using Bloxstrap.Helpers;
|
||||||
using Bloxstrap.Helpers.Integrations;
|
using Bloxstrap.Helpers.Integrations;
|
||||||
|
using Bloxstrap.Models;
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs
|
namespace Bloxstrap.Dialogs
|
||||||
{
|
{
|
||||||
public partial class Preferences : Form
|
public partial class Preferences : Form
|
||||||
{
|
{
|
||||||
|
#region Properties
|
||||||
private static readonly IReadOnlyDictionary<string, BootstrapperStyle> SelectableStyles = new Dictionary<string, BootstrapperStyle>()
|
private static readonly IReadOnlyDictionary<string, BootstrapperStyle> SelectableStyles = new Dictionary<string, BootstrapperStyle>()
|
||||||
{
|
{
|
||||||
{ "Vista (2009 - 2011)", BootstrapperStyle.VistaDialog },
|
{ "Vista (2009 - 2011)", BootstrapperStyle.VistaDialog },
|
||||||
@ -32,40 +34,33 @@ namespace Bloxstrap.Dialogs
|
|||||||
{ "2019", BootstrapperIcon.Icon2019 },
|
{ "2019", BootstrapperIcon.Icon2019 },
|
||||||
};
|
};
|
||||||
|
|
||||||
private BootstrapperStyle? _selectedStyle;
|
private string ChannelInfo
|
||||||
private BootstrapperIcon? _selectedIcon;
|
|
||||||
|
|
||||||
private BootstrapperStyle SelectedStyle
|
|
||||||
{
|
{
|
||||||
get => _selectedStyle ?? BootstrapperStyle.ProgressDialog;
|
|
||||||
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (_selectedStyle == value)
|
if (this.InvokeRequired)
|
||||||
|
{
|
||||||
|
this.Invoke(new Action(() => { this.LabelChannelInfo.Text = value; }));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.LabelChannelInfo.Text = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Core
|
||||||
|
private async Task GetChannelInfo(string channel)
|
||||||
|
{
|
||||||
|
ChannelInfo = "Getting latest deploy, please wait...";
|
||||||
|
|
||||||
|
VersionDeploy info = await DeployManager.GetLastDeploy(channel);
|
||||||
|
|
||||||
|
if (info.FileVersion is null || info.Date is null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_selectedStyle = value;
|
ChannelInfo = $"Last deploy:\nv{info.FileVersion} @ {info.Date}";
|
||||||
|
|
||||||
int index = SelectableStyles.Values.ToList().IndexOf(value);
|
|
||||||
this.StyleSelection.SetSelected(index, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private BootstrapperIcon SelectedIcon
|
|
||||||
{
|
|
||||||
get => _selectedIcon ?? BootstrapperIcon.IconBloxstrap;
|
|
||||||
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (_selectedIcon == value)
|
|
||||||
return;
|
|
||||||
|
|
||||||
_selectedIcon = value;
|
|
||||||
|
|
||||||
int index = SelectableIcons.Values.ToList().IndexOf(value);
|
|
||||||
this.IconSelection.SetSelected(index, true);
|
|
||||||
this.IconPreview.BackgroundImage = IconManager.GetBitmapResource(value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Preferences()
|
public Preferences()
|
||||||
@ -89,21 +84,21 @@ namespace Bloxstrap.Dialogs
|
|||||||
this.InstallLocation.Text = Program.BaseDirectory;
|
this.InstallLocation.Text = Program.BaseDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var style in SelectableStyles)
|
|
||||||
{
|
|
||||||
this.StyleSelection.Items.Add(style.Key);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var icon in SelectableIcons)
|
|
||||||
{
|
|
||||||
this.IconSelection.Items.Add(icon.Key);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Environment.Is64BitOperatingSystem)
|
if (!Environment.Is64BitOperatingSystem)
|
||||||
this.ToggleRFUEnabled.Enabled = false;
|
this.ToggleRFUEnabled.Enabled = false;
|
||||||
|
|
||||||
SelectedStyle = Program.Settings.BootstrapperStyle;
|
// set data sources for list controls
|
||||||
SelectedIcon = Program.Settings.BootstrapperIcon;
|
this.StyleSelection.DataSource = SelectableStyles.Keys.ToList();
|
||||||
|
this.IconSelection.DataSource = SelectableIcons.Keys.ToList();
|
||||||
|
|
||||||
|
if (DeployManager.ChannelsAbstracted.Contains(Program.Settings.Channel))
|
||||||
|
this.SelectChannel.DataSource = DeployManager.ChannelsAbstracted;
|
||||||
|
else
|
||||||
|
this.ToggleShowAllChannels.Checked = true;
|
||||||
|
|
||||||
|
// populate preferences
|
||||||
|
this.StyleSelection.Text = SelectableStyles.FirstOrDefault(x => x.Value == Program.Settings.BootstrapperStyle).Key;
|
||||||
|
this.IconSelection.Text = SelectableIcons.FirstOrDefault(x => x.Value == Program.Settings.BootstrapperIcon).Key;
|
||||||
|
|
||||||
this.ToggleCheckForUpdates.Checked = Program.Settings.CheckForUpdates;
|
this.ToggleCheckForUpdates.Checked = Program.Settings.CheckForUpdates;
|
||||||
|
|
||||||
@ -115,26 +110,19 @@ namespace Bloxstrap.Dialogs
|
|||||||
|
|
||||||
this.ToggleDeathSound.Checked = Program.Settings.UseOldDeathSound;
|
this.ToggleDeathSound.Checked = Program.Settings.UseOldDeathSound;
|
||||||
this.ToggleMouseCursor.Checked = Program.Settings.UseOldMouseCursor;
|
this.ToggleMouseCursor.Checked = Program.Settings.UseOldMouseCursor;
|
||||||
|
|
||||||
|
this.SelectChannel.Text = Program.Settings.Channel;
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
private void InstallLocationBrowseButton_Click(object sender, EventArgs e)
|
#region Dialog Events
|
||||||
|
private void ToggleShowAllChannels_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
DialogResult result = this.InstallLocationBrowseDialog.ShowDialog();
|
if (this.ToggleShowAllChannels.Checked)
|
||||||
|
this.SelectChannel.DataSource = DeployManager.ChannelsAll;
|
||||||
|
else
|
||||||
|
this.SelectChannel.DataSource = DeployManager.ChannelsAbstracted;
|
||||||
|
|
||||||
if (result == DialogResult.OK)
|
|
||||||
this.InstallLocation.Text = this.InstallLocationBrowseDialog.SelectedPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void StyleSelection_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string selected = this.StyleSelection.Text;
|
|
||||||
SelectedStyle = SelectableStyles[selected];
|
|
||||||
}
|
|
||||||
|
|
||||||
private void IconSelection_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string selected = this.IconSelection.Text;
|
|
||||||
SelectedIcon = SelectableIcons[selected];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SaveButton_Click(object sender, EventArgs e)
|
private void SaveButton_Click(object sender, EventArgs e)
|
||||||
@ -143,7 +131,7 @@ namespace Bloxstrap.Dialogs
|
|||||||
|
|
||||||
if (String.IsNullOrEmpty(installLocation))
|
if (String.IsNullOrEmpty(installLocation))
|
||||||
{
|
{
|
||||||
Program.ShowMessageBox(MessageBoxIcon.Error, "You must set an install location");
|
Program.ShowMessageBox("You must set an install location", MessageBoxIcon.Error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,12 +154,12 @@ namespace Bloxstrap.Dialogs
|
|||||||
}
|
}
|
||||||
catch (UnauthorizedAccessException)
|
catch (UnauthorizedAccessException)
|
||||||
{
|
{
|
||||||
Program.ShowMessageBox(MessageBoxIcon.Error, $"{Program.ProjectName} does not have write access to the install location you selected. Please choose another install location.");
|
Program.ShowMessageBox($"{Program.ProjectName} does not have write access to the install location you selected. Please choose another install location.", MessageBoxIcon.Error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Program.ShowMessageBox(MessageBoxIcon.Error, ex.Message);
|
Program.ShowMessageBox(ex.Message, MessageBoxIcon.Error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,7 +174,7 @@ namespace Bloxstrap.Dialogs
|
|||||||
|
|
||||||
if (Program.BaseDirectory is not null && Program.BaseDirectory != installLocation)
|
if (Program.BaseDirectory is not null && Program.BaseDirectory != installLocation)
|
||||||
{
|
{
|
||||||
Program.ShowMessageBox(MessageBoxIcon.Information, $"{Program.ProjectName} will install to the new location you've set the next time it runs.");
|
Program.ShowMessageBox($"{Program.ProjectName} will install to the new location you've set the next time it runs.", MessageBoxIcon.Information);
|
||||||
|
|
||||||
Program.Settings.VersionGuid = "";
|
Program.Settings.VersionGuid = "";
|
||||||
|
|
||||||
@ -205,19 +193,14 @@ namespace Bloxstrap.Dialogs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Program.Settings.BootstrapperStyle = SelectedStyle;
|
|
||||||
Program.Settings.BootstrapperIcon = SelectedIcon;
|
|
||||||
|
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PreviewButton_Click(object sender, EventArgs e)
|
private void PreviewButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Program.Settings.BootstrapperIcon = SelectedIcon;
|
|
||||||
|
|
||||||
this.Visible = false;
|
this.Visible = false;
|
||||||
|
|
||||||
switch (SelectedStyle)
|
switch (Program.Settings.BootstrapperStyle)
|
||||||
{
|
{
|
||||||
case BootstrapperStyle.VistaDialog:
|
case BootstrapperStyle.VistaDialog:
|
||||||
new VistaDialog().ShowDialog();
|
new VistaDialog().ShowDialog();
|
||||||
@ -243,6 +226,33 @@ namespace Bloxstrap.Dialogs
|
|||||||
this.Visible = true;
|
this.Visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Preferences_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Activate();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Preference Events
|
||||||
|
private void StyleSelection_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!this.Visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Program.Settings.BootstrapperStyle = SelectableStyles[this.StyleSelection.Text];
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IconSelection_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
BootstrapperIcon icon = SelectableIcons[this.IconSelection.Text];
|
||||||
|
|
||||||
|
this.IconPreview.BackgroundImage = IconManager.GetBitmapResource(icon);
|
||||||
|
|
||||||
|
if (!this.Visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Program.Settings.BootstrapperIcon = icon;
|
||||||
|
}
|
||||||
|
|
||||||
private void ToggleDiscordRichPresence_CheckedChanged(object sender, EventArgs e)
|
private void ToggleDiscordRichPresence_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Program.Settings.UseDiscordRichPresence = this.ToggleRPCButtons.Enabled = this.ToggleDiscordRichPresence.Checked;
|
Program.Settings.UseDiscordRichPresence = this.ToggleRPCButtons.Enabled = this.ToggleDiscordRichPresence.Checked;
|
||||||
@ -253,6 +263,11 @@ namespace Bloxstrap.Dialogs
|
|||||||
Program.Settings.HideRPCButtons = this.ToggleRPCButtons.Checked;
|
Program.Settings.HideRPCButtons = this.ToggleRPCButtons.Checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RFUWebsite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||||
|
{
|
||||||
|
Utilities.OpenWebsite($"https://github.com/{RbxFpsUnlocker.ProjectRepository}");
|
||||||
|
}
|
||||||
|
|
||||||
private void ToggleRFUEnabled_CheckedChanged(object sender, EventArgs e)
|
private void ToggleRFUEnabled_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Program.Settings.RFUEnabled = this.ToggleRFUAutoclose.Enabled = this.ToggleRFUEnabled.Checked;
|
Program.Settings.RFUEnabled = this.ToggleRFUAutoclose.Enabled = this.ToggleRFUEnabled.Checked;
|
||||||
@ -263,6 +278,14 @@ namespace Bloxstrap.Dialogs
|
|||||||
Program.Settings.RFUAutoclose = this.ToggleRFUAutoclose.Checked;
|
Program.Settings.RFUAutoclose = this.ToggleRFUAutoclose.Checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InstallLocationBrowseButton_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
DialogResult result = this.InstallLocationBrowseDialog.ShowDialog();
|
||||||
|
|
||||||
|
if (result == DialogResult.OK)
|
||||||
|
this.InstallLocation.Text = this.InstallLocationBrowseDialog.SelectedPath;
|
||||||
|
}
|
||||||
|
|
||||||
private void ToggleDeathSound_CheckedChanged(object sender, EventArgs e)
|
private void ToggleDeathSound_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Program.Settings.UseOldDeathSound = this.ToggleDeathSound.Checked;
|
Program.Settings.UseOldDeathSound = this.ToggleDeathSound.Checked;
|
||||||
@ -273,24 +296,25 @@ namespace Bloxstrap.Dialogs
|
|||||||
Program.Settings.UseOldMouseCursor = this.ToggleMouseCursor.Checked;
|
Program.Settings.UseOldMouseCursor = this.ToggleMouseCursor.Checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ToggleCheckForUpdates_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Program.Settings.CheckForUpdates = this.ToggleCheckForUpdates.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RFUWebsite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
||||||
{
|
|
||||||
Utilities.OpenWebsite($"https://github.com/{RbxFpsUnlocker.ProjectRepository}");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ButtonOpenModFolder_Click(object sender, EventArgs e)
|
private void ButtonOpenModFolder_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Process.Start("explorer.exe", Directories.Modifications);
|
Process.Start("explorer.exe", Directories.Modifications);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Preferences_Load(object sender, EventArgs e)
|
private void SelectChannel_SelectedValueChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.Activate();
|
Task.Run(() => GetChannelInfo(Program.Settings.Channel));
|
||||||
}
|
|
||||||
|
if (!this.Visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Program.Settings.Channel = this.SelectChannel.Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ToggleCheckForUpdates_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Program.Settings.CheckForUpdates = this.ToggleCheckForUpdates.Checked;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,4 +63,7 @@
|
|||||||
<metadata name="InstallLocationBrowseDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="InstallLocationBrowseDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="InfoTooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>222, 17</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
154
Bloxstrap/Helpers/DeployManager.cs
Normal file
154
Bloxstrap/Helpers/DeployManager.cs
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
using System.IO;
|
||||||
|
using System.Net.Http;
|
||||||
|
|
||||||
|
using Bloxstrap.Models;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Helpers
|
||||||
|
{
|
||||||
|
public class DeployManager
|
||||||
|
{
|
||||||
|
#region Properties
|
||||||
|
public const string DefaultBaseUrl = "https://setup.rbxcdn.com";
|
||||||
|
public static string BaseUrl { get; private set; } = DefaultBaseUrl;
|
||||||
|
|
||||||
|
public static readonly string DefaultChannel = "LIVE";
|
||||||
|
|
||||||
|
public static string Channel { set => BaseUrl = BuildBaseUrl(value); }
|
||||||
|
|
||||||
|
// basically any channel that has had a deploy within the past month with a windowsplayer build
|
||||||
|
public static readonly List<string> ChannelsAbstracted = new List<string>()
|
||||||
|
{
|
||||||
|
"LIVE",
|
||||||
|
"ZAvatarTeam",
|
||||||
|
"ZCanary",
|
||||||
|
"ZIntegration",
|
||||||
|
"ZLive",
|
||||||
|
"ZNext",
|
||||||
|
"ZPublic",
|
||||||
|
"ZSocialTeam"
|
||||||
|
};
|
||||||
|
|
||||||
|
// why not?
|
||||||
|
public static readonly List<string> ChannelsAll = new List<string>()
|
||||||
|
{
|
||||||
|
"LIVE",
|
||||||
|
"Ganesh",
|
||||||
|
"ZAvatarTeam",
|
||||||
|
"ZBugFixBoost-Mutex-Revert",
|
||||||
|
"ZBugFixCLI-54676-Test",
|
||||||
|
"ZBugFixCLI-55214-Master",
|
||||||
|
"ZCanary",
|
||||||
|
"ZCanary1",
|
||||||
|
"ZCanary2",
|
||||||
|
"ZCanaryApps",
|
||||||
|
"ZClientIntegration",
|
||||||
|
"ZClientWatcher",
|
||||||
|
"ZFeatureBaseline",
|
||||||
|
"ZFeatureBoost_Removal_Test_In_Prod",
|
||||||
|
"ZFeatureFMOD-20115",
|
||||||
|
"ZFeatureFMOD-Recording-Test",
|
||||||
|
"ZFeatureHSR2CDNPlayTest",
|
||||||
|
"ZFeatureHSR2CDNPlayTest2",
|
||||||
|
"ZFeatureInstance-Parent-Weak-Ptr",
|
||||||
|
"ZFeatureInstance-Parent-Weak-Ptr-2",
|
||||||
|
"ZFeatureLTCG1",
|
||||||
|
"ZFeatureLuaIInline1",
|
||||||
|
"ZFeatureQt5.15",
|
||||||
|
"ZFeatureRail",
|
||||||
|
"ZFeatureRetchecksV2",
|
||||||
|
"ZFeatureSubsystemAtomic",
|
||||||
|
"ZFeatureSubsystemHttpClient",
|
||||||
|
"ZFeatureTelemLife",
|
||||||
|
"ZFeatureUse-New-RapidJson-In-Flag-Loading",
|
||||||
|
"ZIntegration",
|
||||||
|
"ZIntegration1",
|
||||||
|
"ZLang",
|
||||||
|
"ZLive",
|
||||||
|
"ZLive1",
|
||||||
|
"ZLoom",
|
||||||
|
"ZNext",
|
||||||
|
"ZProject512-Boost-Remove-Mutex-1",
|
||||||
|
"ZProject516-Boost-Remove-Mutex-Network",
|
||||||
|
"ZPublic",
|
||||||
|
"ZQtitanStudio",
|
||||||
|
"ZQTitanStudioRelease",
|
||||||
|
"ZReleaseVS2019",
|
||||||
|
"ZSocialTeam",
|
||||||
|
"ZStIntegration",
|
||||||
|
"ZStudioInt1",
|
||||||
|
"ZStudioInt2",
|
||||||
|
"ZStudioInt3",
|
||||||
|
"ZStudioInt4",
|
||||||
|
"ZStudioInt5",
|
||||||
|
"ZStudioInt6",
|
||||||
|
"ZStudioInt7",
|
||||||
|
"ZStudioInt8",
|
||||||
|
"ZTesting",
|
||||||
|
"ZVS2019"
|
||||||
|
};
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private static string BuildBaseUrl(string channel)
|
||||||
|
{
|
||||||
|
if (channel == DefaultChannel)
|
||||||
|
return DefaultBaseUrl;
|
||||||
|
else
|
||||||
|
return $"{DefaultBaseUrl}/channel/{channel.ToLower()}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task<VersionDeploy> GetLastDeploy(string channel)
|
||||||
|
{
|
||||||
|
string baseUrl = BuildBaseUrl(channel);
|
||||||
|
string deployHistory = "";
|
||||||
|
string lastDeploy = "";
|
||||||
|
|
||||||
|
using (HttpClient client = new())
|
||||||
|
{
|
||||||
|
deployHistory = await client.GetStringAsync($"{baseUrl}/DeployHistory.txt");
|
||||||
|
}
|
||||||
|
|
||||||
|
using (StringReader reader = new(deployHistory))
|
||||||
|
{
|
||||||
|
string? line;
|
||||||
|
|
||||||
|
while ((line = await reader.ReadLineAsync()) is not null)
|
||||||
|
{
|
||||||
|
if (line.Contains("WindowsPlayer"))
|
||||||
|
lastDeploy = line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (String.IsNullOrEmpty(lastDeploy))
|
||||||
|
throw new Exception($"Could not get latest deploy for channel {channel}");
|
||||||
|
|
||||||
|
// here's to hoping roblox doesn't change their deployment entry format
|
||||||
|
// (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 ...'
|
||||||
|
|
||||||
|
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'
|
||||||
|
|
||||||
|
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'
|
||||||
|
|
||||||
|
lastDeploy = lastDeploy[(date.Length + 16)..]; // '0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...'
|
||||||
|
string fileVersion = "";
|
||||||
|
|
||||||
|
if (lastDeploy.Contains("git hash"))
|
||||||
|
{
|
||||||
|
// ~may 2021 entry: ends like 'file version: 0, 542, 100, 5420251, git hash: b98d6b2bea36fa2161f48cca979fb620bb0c24fd ...'
|
||||||
|
fileVersion = lastDeploy[..lastDeploy.IndexOf(", git")]; // '0, 542, 100, 5420251'
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// pre-may 2021 entry: ends like 'file version: 0, 448, 0, 411122...'
|
||||||
|
fileVersion = lastDeploy[..lastDeploy.IndexOf("...")]; // '0, 448, 0, 411122'
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert to traditional version format
|
||||||
|
fileVersion = fileVersion.Replace(" ", "").Replace(',', '.');
|
||||||
|
|
||||||
|
return new VersionDeploy { VersionGuid = versionGuid, Date = date, FileVersion = fileVersion };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -9,16 +9,17 @@ namespace Bloxstrap.Helpers
|
|||||||
// map uri keys to command line args
|
// map uri keys to command line args
|
||||||
private static readonly IReadOnlyDictionary<string, string> UriKeyArgMap = new Dictionary<string, string>()
|
private static readonly IReadOnlyDictionary<string, string> UriKeyArgMap = new Dictionary<string, string>()
|
||||||
{
|
{
|
||||||
// excluding roblox-player, browsertrackerid and channel
|
// excluding roblox-player and browsertrackerid
|
||||||
{ "launchmode", "--" },
|
{ "launchmode", "--" },
|
||||||
{ "gameinfo", "-t " },
|
{ "gameinfo", "-t " },
|
||||||
{ "placelauncherurl", "-j "},
|
{ "placelauncherurl", "-j "},
|
||||||
// { "launchtime", "--launchtime=" }, we'll set this when launching the game client
|
// { "launchtime", "--launchtime=" }, we'll set this when launching the game client
|
||||||
{ "robloxLocale", "--rloc " },
|
{ "robloxLocale", "--rloc " },
|
||||||
{ "gameLocale", "--gloc " },
|
{ "gameLocale", "--gloc " },
|
||||||
|
{ "channel", "-channel " }
|
||||||
};
|
};
|
||||||
|
|
||||||
public static string Parse(string protocol)
|
public static string ParseUri(string protocol)
|
||||||
{
|
{
|
||||||
string[] keyvalPair;
|
string[] keyvalPair;
|
||||||
string key;
|
string key;
|
||||||
@ -34,12 +35,25 @@ namespace Bloxstrap.Helpers
|
|||||||
key = keyvalPair[0];
|
key = keyvalPair[0];
|
||||||
val = keyvalPair[1];
|
val = keyvalPair[1];
|
||||||
|
|
||||||
if (!UriKeyArgMap.ContainsKey(key))
|
if (!UriKeyArgMap.ContainsKey(key) || String.IsNullOrEmpty(val))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (key == "placelauncherurl")
|
if (key == "placelauncherurl")
|
||||||
val = HttpUtility.UrlDecode(val).Replace("browserTrackerId", "lol");
|
val = HttpUtility.UrlDecode(val).Replace("browserTrackerId", "lol");
|
||||||
|
|
||||||
|
if (key == "channel" && val != Program.Settings.Channel)
|
||||||
|
{
|
||||||
|
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" +
|
||||||
|
$"Would you like to switch channels from {Program.Settings.Channel} to {val}?",
|
||||||
|
MessageBoxIcon.Question,
|
||||||
|
MessageBoxButtons.YesNo
|
||||||
|
);
|
||||||
|
|
||||||
|
if (result == DialogResult.Yes)
|
||||||
|
Program.Settings.Channel = val;
|
||||||
|
}
|
||||||
|
|
||||||
commandLine.Append(UriKeyArgMap[key] + val + " ");
|
commandLine.Append(UriKeyArgMap[key] + val + " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ namespace Bloxstrap.Helpers.RSMM
|
|||||||
|
|
||||||
public static async Task<PackageManifest> Get(string versionGuid)
|
public static async Task<PackageManifest> Get(string versionGuid)
|
||||||
{
|
{
|
||||||
string pkgManifestUrl = $"{Program.BaseUrlSetup}/{versionGuid}-rbxPkgManifest.txt";
|
string pkgManifestUrl = $"{DeployManager.BaseUrl}/{versionGuid}-rbxPkgManifest.txt";
|
||||||
string pkgManifestData;
|
string pkgManifestData;
|
||||||
|
|
||||||
using (HttpClient http = new())
|
using (HttpClient http = new())
|
||||||
|
@ -22,11 +22,10 @@ namespace Bloxstrap.Helpers
|
|||||||
|
|
||||||
if (installedVersionInfo.ProductVersion != currentVersionInfo.ProductVersion)
|
if (installedVersionInfo.ProductVersion != currentVersionInfo.ProductVersion)
|
||||||
{
|
{
|
||||||
DialogResult result = MessageBox.Show(
|
DialogResult result = Program.ShowMessageBox(
|
||||||
$"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?",
|
$"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,
|
MessageBoxIcon.Question,
|
||||||
MessageBoxButtons.YesNo,
|
MessageBoxButtons.YesNo
|
||||||
MessageBoxIcon.Question
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (result == DialogResult.Yes)
|
if (result == DialogResult.Yes)
|
||||||
@ -66,11 +65,10 @@ namespace Bloxstrap.Helpers
|
|||||||
|
|
||||||
if (currentVersion != latestVersion)
|
if (currentVersion != latestVersion)
|
||||||
{
|
{
|
||||||
DialogResult result = MessageBox.Show(
|
DialogResult result = Program.ShowMessageBox(
|
||||||
$"A new version of {Program.ProjectName} is available\n\n[{latestVersion}]\n{releaseNotes}\n\nWould you like to download it?",
|
$"A new version of {Program.ProjectName} is available\n\n[{latestVersion}]\n{releaseNotes}\n\nWould you like to download it?",
|
||||||
Program.ProjectName,
|
MessageBoxIcon.Question,
|
||||||
MessageBoxButtons.YesNo,
|
MessageBoxButtons.YesNo
|
||||||
MessageBoxIcon.Question
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (result == DialogResult.Yes)
|
if (result == DialogResult.Yes)
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
using System;
|
using Bloxstrap.Enums;
|
||||||
using System.Collections.Generic;
|
using Bloxstrap.Helpers;
|
||||||
using System.Linq;
|
|
||||||
using Bloxstrap.Enums;
|
|
||||||
|
|
||||||
namespace Bloxstrap.Models
|
namespace Bloxstrap.Models
|
||||||
{
|
{
|
||||||
public class SettingsFormat
|
public class SettingsFormat
|
||||||
{
|
{
|
||||||
|
public string Channel { get; set; } = DeployManager.DefaultChannel;
|
||||||
public string VersionGuid { get; set; } = "";
|
public string VersionGuid { get; set; } = "";
|
||||||
|
|
||||||
public bool CheckForUpdates { get; set; } = true;
|
public bool CheckForUpdates { get; set; } = true;
|
||||||
|
15
Bloxstrap/Models/VersionDeploy.cs
Normal file
15
Bloxstrap/Models/VersionDeploy.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Models
|
||||||
|
{
|
||||||
|
public class VersionDeploy
|
||||||
|
{
|
||||||
|
public string? VersionGuid { get; set; }
|
||||||
|
public string? Date { get; set; }
|
||||||
|
public string? FileVersion { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -14,7 +14,6 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
public const string ProjectName = "Bloxstrap";
|
public const string ProjectName = "Bloxstrap";
|
||||||
public const string ProjectRepository = "pizzaboxer/bloxstrap";
|
public const string ProjectRepository = "pizzaboxer/bloxstrap";
|
||||||
public const string BaseUrlSetup = "https://s3.amazonaws.com/setup.roblox.com";
|
|
||||||
|
|
||||||
#region base64 stuff
|
#region base64 stuff
|
||||||
// TODO: using IPFS as a reliable method for static asset storage instead of base64?
|
// TODO: using IPFS as a reliable method for static asset storage instead of base64?
|
||||||
@ -32,10 +31,10 @@ namespace Bloxstrap
|
|||||||
public static SettingsManager SettingsManager = new();
|
public static SettingsManager SettingsManager = new();
|
||||||
public static SettingsFormat Settings = SettingsManager.Settings;
|
public static SettingsFormat Settings = SettingsManager.Settings;
|
||||||
|
|
||||||
|
// shorthand
|
||||||
public static void ShowMessageBox(MessageBoxIcon icon, string message)
|
public static DialogResult ShowMessageBox(string message, MessageBoxIcon icon = MessageBoxIcon.None, MessageBoxButtons buttons = MessageBoxButtons.OK)
|
||||||
{
|
{
|
||||||
MessageBox.Show(message, ProjectName, MessageBoxButtons.OK, icon);
|
return MessageBox.Show(message, ProjectName, buttons, icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Exit()
|
public static void Exit()
|
||||||
@ -56,7 +55,7 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
if (Process.GetProcessesByName(ProjectName).Length > 1)
|
if (Process.GetProcessesByName(ProjectName).Length > 1)
|
||||||
{
|
{
|
||||||
ShowMessageBox(MessageBoxIcon.Error, $"{ProjectName} is already running. Please close any currently open {ProjectName} window.\nIf you have Discord Rich Presence enabled, then close Roblox if it's running.");
|
ShowMessageBox($"{ProjectName} is already running. Please close any currently open {ProjectName} window.\nIf you have Discord Rich Presence enabled, then close Roblox if it's running.", MessageBoxIcon.Error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,7 +106,7 @@ namespace Bloxstrap
|
|||||||
}
|
}
|
||||||
else if (args[0].StartsWith("roblox-player:"))
|
else if (args[0].StartsWith("roblox-player:"))
|
||||||
{
|
{
|
||||||
commandLine = Protocol.Parse(args[0]);
|
commandLine = Protocol.ParseUri(args[0]);
|
||||||
}
|
}
|
||||||
else if (args[0].StartsWith("roblox:"))
|
else if (args[0].StartsWith("roblox:"))
|
||||||
{
|
{
|
||||||
@ -123,8 +122,12 @@ namespace Bloxstrap
|
|||||||
commandLine = "--app";
|
commandLine = "--app";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(commandLine))
|
if (!String.IsNullOrEmpty(commandLine))
|
||||||
new Bootstrapper().Initialize(Settings.BootstrapperStyle, commandLine);
|
{
|
||||||
|
DeployManager.Channel = Settings.Channel;
|
||||||
|
new Bootstrapper().Initialize(commandLine);
|
||||||
|
}
|
||||||
|
|
||||||
SettingsManager.Save();
|
SettingsManager.Save();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user