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 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}"))
{
@ -38,7 +43,7 @@ namespace Kiseki.Launcher.Windows
uninstallKey.SetValue("URLUpdateInfo", $"https://github.com/{ProjectRepository}/releases/latest");
}
public void Unregister()
public static void Unregister()
{
Registry.CurrentUser.DeleteSubKey($@"Software\{ProjectName}");
}

View File

@ -27,10 +27,12 @@ namespace Kiseki.Launcher.Windows
};
Controller = new Controller(Launcher.BaseUrl, args);
Controller.OnPageHeadingChanged += Controller_PageHeadingChanged;
Controller.OnProgressBarChanged += Controller_ProgressBarChanged;
Controller.OnProgressBarStateChanged += Controller_ProgressBarStateChanged;
Controller.OnLaunched += Controller_Launched;
Controller.OnPageHeadingChange += Controller_PageHeadingChanged;
Controller.OnProgressBarChange += Controller_ProgressBarChanged;
Controller.OnProgressBarStateChange += Controller_ProgressBarStateChanged;
Controller.OnInstall += (s, e) => Launcher.Install();
Controller.OnLaunch += (s, e) => Environment.Exit(0);
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()
{
TaskDialogIcon logo = new(Resources.IconKiseki);

View File

@ -13,10 +13,11 @@ namespace Kiseki.Launcher
private readonly string BaseURL;
private readonly Dictionary<string, string> Arguments = new();
public event EventHandler<string>? OnPageHeadingChanged;
public event EventHandler<int>? OnProgressBarChanged;
public event EventHandler<ProgressBarState>? OnProgressBarStateChanged;
public event EventHandler? OnLaunched;
public event EventHandler<string>? OnPageHeadingChange;
public event EventHandler<int>? OnProgressBarChange;
public event EventHandler<ProgressBarState>? OnProgressBarStateChange;
public event EventHandler? OnInstall;
public event EventHandler? OnLaunch;
public static readonly HttpClient HttpClient = new();
@ -24,7 +25,12 @@ namespace Kiseki.Launcher
{
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
if (!Base64.IsBase64String(args[0]))
@ -61,7 +67,7 @@ namespace Kiseki.Launcher
if (marquee)
{
PageHeadingChange("Downloading Kiseki...");
ProgressBarStateChanged(ProgressBarState.Normal);
ProgressBarStateChange(ProgressBarState.Normal);
marquee = false;
}
@ -80,7 +86,7 @@ namespace Kiseki.Launcher
}
PageHeadingChange("Installing Kiseki...");
ProgressBarStateChanged(ProgressBarState.Marquee);
ProgressBarStateChange(ProgressBarState.Marquee);
await Task.Delay(2200);
PageHeadingChange("Configuring Kiseki...");
@ -89,7 +95,7 @@ namespace Kiseki.Launcher
PageHeadingChange("Launching Kiseki...");
await Task.Delay(3000);
Launched();
Launch();
}
public async void Dispose()
@ -99,22 +105,28 @@ namespace Kiseki.Launcher
protected virtual void PageHeadingChange(string Heading)
{
OnPageHeadingChanged!.Invoke(this, Heading);
OnPageHeadingChange!.Invoke(this, Heading);
}
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
{
void Register();
void Unregister();
static abstract void Install();
static abstract void Register();
static abstract void Unregister();
}
}