feat: code for installation
This commit is contained in:
parent
4847d25b07
commit
f9f7d653e3
|
|
@ -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}");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue