migration
This commit is contained in:
parent
561881c9aa
commit
f133c740e1
55 changed files with 2928 additions and 20 deletions
135
test/Discovery.Loader.Avalonia/App.axaml.cs
Normal file
135
test/Discovery.Loader.Avalonia/App.axaml.cs
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
using Avalonia;
|
||||
using Avalonia.Controls.ApplicationLifetimes;
|
||||
using Avalonia.Data.Core.Plugins;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Discovery.Loader.Models;
|
||||
using Discovery.Loader.Services;
|
||||
using Discovery.Loader.ViewModels;
|
||||
using Discovery.Loader.Windows;
|
||||
|
||||
namespace Discovery.Loader;
|
||||
|
||||
public partial class App : Application
|
||||
{
|
||||
private UpdateService _updateService = new();
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
AvaloniaXamlLoader.Load(this);
|
||||
}
|
||||
|
||||
public override async void OnFrameworkInitializationCompleted()
|
||||
{
|
||||
BindingPlugins.DataValidators.RemoveAt(0);
|
||||
|
||||
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
||||
{
|
||||
var installed = _updateService.IsInstalled();
|
||||
|
||||
|
||||
|
||||
// update-check
|
||||
Update? update = null;
|
||||
|
||||
try
|
||||
{
|
||||
update = await _updateService.GetUpdateAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// if not installed (need update to install)
|
||||
if (!installed)
|
||||
{
|
||||
if (update == null)
|
||||
{
|
||||
// set window
|
||||
var vm = new MainViewModel();
|
||||
var mw = new MainWindow { DataContext = vm };
|
||||
desktop.MainWindow = mw;
|
||||
|
||||
// display major error
|
||||
mw.Show();
|
||||
await vm.ErrorAsync("Install failed (Source unavailable)");
|
||||
mw.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
// set window
|
||||
var vm = new MainViewModel();
|
||||
var mw = new MainWindow { DataContext = vm };
|
||||
desktop.MainWindow = mw;
|
||||
|
||||
// display install progress
|
||||
mw.Show();
|
||||
await vm.InstallAsync(_updateService, update);
|
||||
mw.Close();
|
||||
|
||||
// start
|
||||
_updateService.StartExecutable();
|
||||
}
|
||||
}
|
||||
// if installed (should update if needed)
|
||||
else
|
||||
{
|
||||
if (update == null)
|
||||
{
|
||||
// set window
|
||||
var vm = new MainViewModel();
|
||||
var mw = new MainWindow { DataContext = vm };
|
||||
desktop.MainWindow = mw;
|
||||
|
||||
// display cant fetch updates, start afterwards
|
||||
mw.Show();
|
||||
await vm.ErrorAsync("Failed to fetch updates.");
|
||||
mw.Close();
|
||||
|
||||
// start anyway
|
||||
_updateService.StartExecutable();
|
||||
}
|
||||
else
|
||||
{
|
||||
// compare versions
|
||||
var isUpdated = _updateService.CompareVersion(update);
|
||||
if (!isUpdated)
|
||||
{
|
||||
// set window
|
||||
var vm = new MainViewModel();
|
||||
var mw = new MainWindow { DataContext = vm };
|
||||
desktop.MainWindow = mw;
|
||||
|
||||
// display update
|
||||
mw.Show();
|
||||
await vm.UpdateAsync(_updateService, update);
|
||||
mw.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
// on current-version just start
|
||||
_updateService.StartExecutable();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
//mw.Close();
|
||||
|
||||
//if (_updateService.IsInstalled())
|
||||
// _updateService.StartExecutable();
|
||||
|
||||
desktop.Shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
base.OnFrameworkInitializationCompleted();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue