diff --git a/ModpackUpdater.Apps.Manager/Ui/MainWindow.axaml.cs b/ModpackUpdater.Apps.Manager/Ui/MainWindow.axaml.cs index 357b306..5f75000 100644 --- a/ModpackUpdater.Apps.Manager/Ui/MainWindow.axaml.cs +++ b/ModpackUpdater.Apps.Manager/Ui/MainWindow.axaml.cs @@ -129,7 +129,10 @@ public partial class MainWindow : Window, IMainApi private async void Window_OnLoaded(object? sender, RoutedEventArgs e) { - var updater = new AppUpdates(Program.UpdateUrl, this); + var updater = new AppUpdates(Program.UpdateUrl, this) + { + UsePopups = true, + }; updater.OnDownloadProgramUpdate += (o, _) => Model.Progress.Start(); await updater.UpdateApp(); Model.Progress.Stop(); diff --git a/ModpackUpdater.Apps/AppUpdates.cs b/ModpackUpdater.Apps/AppUpdates.cs index c0977f1..44720fd 100644 --- a/ModpackUpdater.Apps/AppUpdates.cs +++ b/ModpackUpdater.Apps/AppUpdates.cs @@ -14,6 +14,8 @@ public class AppUpdates(string updateUrl, Window mainWindow) { public event EventHandler? OnDownloadProgramUpdate; + public bool UsePopups { get; set; } + public async Task UpdateApp() { #if DISABLE_UPDATE @@ -41,21 +43,29 @@ public class AppUpdates(string updateUrl, Window mainWindow) { Distro = RuntimeInformationsEx.GetRuntimeIdentifier(), }; + + if (await updater.CheckForUpdate() is not { } packageToInstall || await AskForUpdate() != ButtonResult.Yes) + return; - if (await updater.CheckForUpdate() is {} packageToInstall - && await MessageBoxManager.GetMessageBoxStandard(GeneralMsgBoxLangRes.UpdateAvailable_Title, GeneralMsgBoxLangRes.UpdateAvailable, ButtonEnum.YesNo, MsBox.Avalonia.Enums.Icon.Info).ShowWindowDialogAsync(mainWindow) == ButtonResult.Yes) + OnDownloadProgramUpdate?.Invoke(this, EventArgs.Empty); + mainWindow.IsEnabled = false; + + if (await updater.DownloadPackageAsync(packageToInstall) && await updater.InstallPackageAsync(packageToInstall, myAppPath)) { - OnDownloadProgramUpdate?.Invoke(this, EventArgs.Empty); - mainWindow.IsEnabled = false; - if (await updater.DownloadPackageAsync(packageToInstall) - && await updater.InstallPackageAsync(packageToInstall, myAppPath)) - { - mainWindow.IsVisible = false; - await Process.Start(myAppPath).WaitForExitAsync(); - Environment.Exit(0); - return; - } - mainWindow.IsEnabled = true; + mainWindow.IsVisible = false; + await Process.Start(myAppPath).WaitForExitAsync(); + Environment.Exit(0); + return; } + + mainWindow.IsEnabled = true; + } + + private Task AskForUpdate() + { + var msgBox = MessageBoxManager.GetMessageBoxStandard(GeneralMsgBoxLangRes.UpdateAvailable_Title, GeneralMsgBoxLangRes.UpdateAvailable, ButtonEnum.YesNo, Icon.Info); + if (UsePopups) + return msgBox.ShowAsPopupAsync(mainWindow); + return msgBox.ShowWindowDialogAsync(mainWindow); } } \ No newline at end of file