feat: code for installation

This commit is contained in:
rjindael 2023-07-31 01:27:02 -07:00
parent 4847d25b07
commit f9f7d653e3
No known key found for this signature in database
GPG Key ID: D069369C906CCF31
4 changed files with 42 additions and 27 deletions

View File

@ -12,7 +12,12 @@ namespace Kiseki.Launcher.Windows
public readonly static string BaseUrl = "test.kiseki.lol"; // TODO: This should be set dynamically somehow public readonly static string BaseUrl = "test.kiseki.lol"; // TODO: This should be set dynamically somehow
public readonly static string Version = Assembly.GetExecutingAssembly().GetName().Version!.ToString()[..^2]; public readonly static string Version = Assembly.GetExecutingAssembly().GetName().Version!.ToString()[..^2];
public void Register() public static void Install()
{
}
public static void Register()
{ {
using (RegistryKey applicationKey = Registry.CurrentUser.CreateSubKey($@"Software\{ProjectName}")) using (RegistryKey applicationKey = Registry.CurrentUser.CreateSubKey($@"Software\{ProjectName}"))
{ {
@ -38,7 +43,7 @@ namespace Kiseki.Launcher.Windows
uninstallKey.SetValue("URLUpdateInfo", $"https://github.com/{ProjectRepository}/releases/latest"); uninstallKey.SetValue("URLUpdateInfo", $"https://github.com/{ProjectRepository}/releases/latest");
} }
public void Unregister() public static void Unregister()
{ {
Registry.CurrentUser.DeleteSubKey($@"Software\{ProjectName}"); Registry.CurrentUser.DeleteSubKey($@"Software\{ProjectName}");
} }

View File

@ -27,10 +27,12 @@ namespace Kiseki.Launcher.Windows
}; };
Controller = new Controller(Launcher.BaseUrl, args); Controller = new Controller(Launcher.BaseUrl, args);
Controller.OnPageHeadingChanged += Controller_PageHeadingChanged; Controller.OnPageHeadingChange += Controller_PageHeadingChanged;
Controller.OnProgressBarChanged += Controller_ProgressBarChanged; Controller.OnProgressBarChange += Controller_ProgressBarChanged;
Controller.OnProgressBarStateChanged += Controller_ProgressBarStateChanged; Controller.OnProgressBarStateChange += Controller_ProgressBarStateChanged;
Controller.OnLaunched += Controller_Launched;
Controller.OnInstall += (s, e) => Launcher.Install();
Controller.OnLaunch += (s, e) => Environment.Exit(0);
Page.Destroyed += (s, e) => Page.Destroyed += (s, e) =>
{ {
@ -66,11 +68,6 @@ namespace Kiseki.Launcher.Windows
}; };
} }
private void Controller_Launched(object? sender, EventArgs e)
{
Environment.Exit(0);
}
private void ShowProgressDialog() private void ShowProgressDialog()
{ {
TaskDialogIcon logo = new(Resources.IconKiseki); TaskDialogIcon logo = new(Resources.IconKiseki);

View File

@ -13,10 +13,11 @@ namespace Kiseki.Launcher
private readonly string BaseURL; private readonly string BaseURL;
private readonly Dictionary<string, string> Arguments = new(); private readonly Dictionary<string, string> Arguments = new();
public event EventHandler<string>? OnPageHeadingChanged; public event EventHandler<string>? OnPageHeadingChange;
public event EventHandler<int>? OnProgressBarChanged; public event EventHandler<int>? OnProgressBarChange;
public event EventHandler<ProgressBarState>? OnProgressBarStateChanged; public event EventHandler<ProgressBarState>? OnProgressBarStateChange;
public event EventHandler? OnLaunched; public event EventHandler? OnInstall;
public event EventHandler? OnLaunch;
public static readonly HttpClient HttpClient = new(); public static readonly HttpClient HttpClient = new();
@ -24,7 +25,12 @@ namespace Kiseki.Launcher
{ {
BaseURL = baseURL; BaseURL = baseURL;
if (args.Length > 0) if (args.Length == 0)
{
// We are launching for the first time. This means that we should trigger the launcher install process.
Install();
}
else
{ {
// TODO: handle these more gracefully // TODO: handle these more gracefully
if (!Base64.IsBase64String(args[0])) if (!Base64.IsBase64String(args[0]))
@ -61,7 +67,7 @@ namespace Kiseki.Launcher
if (marquee) if (marquee)
{ {
PageHeadingChange("Downloading Kiseki..."); PageHeadingChange("Downloading Kiseki...");
ProgressBarStateChanged(ProgressBarState.Normal); ProgressBarStateChange(ProgressBarState.Normal);
marquee = false; marquee = false;
} }
@ -80,7 +86,7 @@ namespace Kiseki.Launcher
} }
PageHeadingChange("Installing Kiseki..."); PageHeadingChange("Installing Kiseki...");
ProgressBarStateChanged(ProgressBarState.Marquee); ProgressBarStateChange(ProgressBarState.Marquee);
await Task.Delay(2200); await Task.Delay(2200);
PageHeadingChange("Configuring Kiseki..."); PageHeadingChange("Configuring Kiseki...");
@ -89,7 +95,7 @@ namespace Kiseki.Launcher
PageHeadingChange("Launching Kiseki..."); PageHeadingChange("Launching Kiseki...");
await Task.Delay(3000); await Task.Delay(3000);
Launched(); Launch();
} }
public async void Dispose() public async void Dispose()
@ -99,22 +105,28 @@ namespace Kiseki.Launcher
protected virtual void PageHeadingChange(string Heading) protected virtual void PageHeadingChange(string Heading)
{ {
OnPageHeadingChanged!.Invoke(this, Heading); OnPageHeadingChange!.Invoke(this, Heading);
} }
protected virtual void ProgressBarChange(int Value) protected virtual void ProgressBarChange(int Value)
{ {
OnProgressBarChanged!.Invoke(this, Value); OnProgressBarChange!.Invoke(this, Value);
} }
protected virtual void ProgressBarStateChanged(ProgressBarState State) protected virtual void ProgressBarStateChange(ProgressBarState State)
{ {
OnProgressBarStateChanged!.Invoke(this, State); OnProgressBarStateChange!.Invoke(this, State);
} }
protected virtual void Launched() protected virtual void Install()
{ {
OnLaunched!.Invoke(this, EventArgs.Empty); OnInstall!.Invoke(this, EventArgs.Empty);
}
protected virtual void Launch()
{
OnLaunch!.Invoke(this, EventArgs.Empty);
} }
} }
} }

View File

@ -2,7 +2,8 @@ namespace Kiseki.Launcher
{ {
public interface ILauncher public interface ILauncher
{ {
void Register(); static abstract void Install();
void Unregister(); static abstract void Register();
static abstract void Unregister();
} }
} }