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 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}");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue