diff --git a/src/MaaWpfGui/Models/ResourceUpdater.cs b/src/MaaWpfGui/Models/ResourceUpdater.cs index c81f1ed094..a3390ffbe2 100644 --- a/src/MaaWpfGui/Models/ResourceUpdater.cs +++ b/src/MaaWpfGui/Models/ResourceUpdater.cs @@ -628,6 +628,37 @@ namespace MaaWpfGui.Models return await DownloadFromMirrorChyanAsync(uri); } + public static async Task CheckAndDownloadUpdate() + { + SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = true; + + // 可以用 MirrorChyan 资源更新了喵 + var (ret, uri) = await CheckFromMirrorChyanAsync(); + if (ret != CheckUpdateRetT.OK || string.IsNullOrEmpty(uri)) + { + SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = false; + return ret; + } + + switch (SettingsViewModel.VersionUpdateSettings.ResourceUpdateSource) + { + case "Github": + break; + + case "MirrorChyan": + if (await DownloadFromMirrorChyanAsync(uri)) + { + SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = false; + return CheckUpdateRetT.OnlyGameResourceUpdated; + } + + break; + } + + SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = false; + return ret; + } + private static async Task DownloadFullPackageAsync(string url, string saveTo) { using var response = await Instances.HttpService.GetAsync(new Uri(url)); diff --git a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs index 2d8ec288ea..32183abe3c 100644 --- a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs @@ -468,7 +468,16 @@ namespace MaaWpfGui.ViewModels.UI _ = Task.Run(async () => { await Task.Delay(delayTime); - await SettingsViewModel.VersionUpdateSettings.ManualUpdate(); + if (await Instances.VersionUpdateViewModel.CheckAndDownloadUpdate() == VersionUpdateViewModel.CheckUpdateRetT.OK) + { + _ = Instances.VersionUpdateViewModel.AskToRestart(); + } + + if (await ResourceUpdater.CheckAndDownloadUpdate() == VersionUpdateViewModel.CheckUpdateRetT.OK) + { + _ = Instances.VersionUpdateViewModel.AskToRestart(true); + } + _isCheckingForUpdates = false; }); } diff --git a/src/MaaWpfGui/ViewModels/UI/VersionUpdateViewModel.cs b/src/MaaWpfGui/ViewModels/UI/VersionUpdateViewModel.cs index 69e01b94c1..a806b63b6f 100644 --- a/src/MaaWpfGui/ViewModels/UI/VersionUpdateViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/VersionUpdateViewModel.cs @@ -437,12 +437,18 @@ public class VersionUpdateViewModel : Screen var ret = await CheckAndDownloadUpdate(); if (ret == CheckUpdateRetT.OK) { - AskToRestart(); + _ = AskToRestart(); + } + + var ret2 = await ResourceUpdater.CheckAndDownloadUpdate(); + if (ret2 == CheckUpdateRetT.OK) + { + _ = AskToRestart(true); } } else { - var ret = await CheckAndDownloadUpdate(); + // var ret = await CheckAndDownloadUpdate(); // 跑个空任务避免 async warning await Task.Run(() => { }); } @@ -453,45 +459,6 @@ public class VersionUpdateViewModel : Screen { SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = true; var ret = await CheckAndDownloadVersionUpdate(); - if (ret == CheckUpdateRetT.OK) - { - SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = false; - return ret; - } - - // nnd 都别更新了 - /* - var resRet = await ResourceUpdater.UpdateAsync(); - if (resRet == ResourceUpdater.UpdateResult.Success) - { - Instances.SettingsViewModel.IsCheckingForUpdates = false; - return CheckUpdateRetT.OnlyGameResourceUpdated; - } - */ - - // 可以用 MirrorChyan 资源更新了喵 - var (checkRet, uri) = await ResourceUpdater.CheckFromMirrorChyanAsync(); - if (checkRet != CheckUpdateRetT.OK || string.IsNullOrEmpty(uri)) - { - SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = false; - return ret; - } - - switch (SettingsViewModel.VersionUpdateSettings.ResourceUpdateSource) - { - case "Github": - break; - - case "MirrorChyan": - if (await ResourceUpdater.DownloadFromMirrorChyanAsync(uri)) - { - SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = false; - return CheckUpdateRetT.OnlyGameResourceUpdated; - } - - break; - } - SettingsViewModel.VersionUpdateSettings.IsCheckingForUpdates = false; return ret; } @@ -698,7 +665,7 @@ public class VersionUpdateViewModel : Screen } } - public async void AskToRestart() + public async Task AskToRestart(bool isResource = false) { if (SettingsViewModel.VersionUpdateSettings.AutoInstallUpdatePackage) { @@ -709,10 +676,12 @@ public class VersionUpdateViewModel : Screen await _runningState.UntilIdleAsync(10000); var result = MessageBoxHelper.Show( - LocalizationHelper.GetString("NewVersionDownloadCompletedDesc"), - LocalizationHelper.GetString("NewVersionDownloadCompletedTitle"), + LocalizationHelper.GetString(isResource ? "GameResourceUpdated" : "NewVersionDownloadCompletedDesc"), + LocalizationHelper.GetString(isResource ? "Tip" : "NewVersionDownloadCompletedTitle"), MessageBoxButton.OKCancel, - MessageBoxImage.Question); + MessageBoxImage.Question, + ok: LocalizationHelper.GetString("Ok"), + cancel: LocalizationHelper.GetString("ManualRestart")); if (result == MessageBoxResult.OK) { Bootstrapper.ShutdownAndRestartWithoutArgs(); diff --git a/src/MaaWpfGui/ViewModels/UserControl/Settings/VersionUpdateSettingsUserControlModel.cs b/src/MaaWpfGui/ViewModels/UserControl/Settings/VersionUpdateSettingsUserControlModel.cs index e4858bc04c..c01413cec6 100644 --- a/src/MaaWpfGui/ViewModels/UserControl/Settings/VersionUpdateSettingsUserControlModel.cs +++ b/src/MaaWpfGui/ViewModels/UserControl/Settings/VersionUpdateSettingsUserControlModel.cs @@ -405,7 +405,7 @@ public class VersionUpdateSettingsUserControlModel : PropertyChangedBase break; case VersionUpdateViewModel.CheckUpdateRetT.OK: - Instances.VersionUpdateViewModel.AskToRestart(); + _ = Instances.VersionUpdateViewModel.AskToRestart(); break; case VersionUpdateViewModel.CheckUpdateRetT.NewVersionIsBeingBuilt: