diff options
Diffstat (limited to 'src/Ryujinx.Ava/Modules/Updater/Updater.cs')
-rw-r--r-- | src/Ryujinx.Ava/Modules/Updater/Updater.cs | 162 |
1 files changed, 70 insertions, 92 deletions
diff --git a/src/Ryujinx.Ava/Modules/Updater/Updater.cs b/src/Ryujinx.Ava/Modules/Updater/Updater.cs index 5fa5241d..af7608d3 100644 --- a/src/Ryujinx.Ava/Modules/Updater/Updater.cs +++ b/src/Ryujinx.Ava/Modules/Updater/Updater.cs @@ -82,12 +82,9 @@ namespace Ryujinx.Modules { Logger.Error?.Print(LogClass.Application, "Failed to convert the current Ryujinx version!"); - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateWarningDialog( - LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedMessage], - LocaleManager.Instance[LocaleKeys.DialogUpdaterCancelUpdateMessage]); - }); + await ContentDialogHelper.CreateWarningDialog( + LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedMessage], + LocaleManager.Instance[LocaleKeys.DialogUpdaterCancelUpdateMessage]); _running = false; @@ -114,10 +111,9 @@ namespace Ryujinx.Modules { if (showVersionUpToDate) { - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateUpdaterInfoDialog(LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], ""); - }); + await ContentDialogHelper.CreateUpdaterInfoDialog( + LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], + ""); } _running = false; @@ -134,10 +130,9 @@ namespace Ryujinx.Modules { if (showVersionUpToDate) { - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateUpdaterInfoDialog(LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], ""); - }); + await ContentDialogHelper.CreateUpdaterInfoDialog( + LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], + ""); } _running = false; @@ -149,10 +144,8 @@ namespace Ryujinx.Modules { Logger.Error?.Print(LogClass.Application, exception.Message); - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogUpdaterFailedToGetVersionMessage]); - }); + await ContentDialogHelper.CreateErrorDialog( + LocaleManager.Instance[LocaleKeys.DialogUpdaterFailedToGetVersionMessage]); _running = false; @@ -167,12 +160,9 @@ namespace Ryujinx.Modules { Logger.Error?.Print(LogClass.Application, "Failed to convert the received Ryujinx version from Github!"); - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateWarningDialog( - LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedGithubMessage], - LocaleManager.Instance[LocaleKeys.DialogUpdaterCancelUpdateMessage]); - }); + await ContentDialogHelper.CreateWarningDialog( + LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedGithubMessage], + LocaleManager.Instance[LocaleKeys.DialogUpdaterCancelUpdateMessage]); _running = false; @@ -183,10 +173,9 @@ namespace Ryujinx.Modules { if (showVersionUpToDate) { - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateUpdaterInfoDialog(LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], ""); - }); + await ContentDialogHelper.CreateUpdaterInfoDialog( + LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], + ""); } _running = false; @@ -212,7 +201,7 @@ namespace Ryujinx.Modules _buildSize = -1; } - Dispatcher.UIThread.Post(async () => + await Dispatcher.UIThread.InvokeAsync(async () => { // Show a message asking the user if they want to update var shouldUpdate = await ContentDialogHelper.CreateChoiceDialog( @@ -222,7 +211,7 @@ namespace Ryujinx.Modules if (shouldUpdate) { - UpdateRyujinx(mainWindow, _buildUrl); + await UpdateRyujinx(mainWindow, _buildUrl); } else { @@ -241,7 +230,7 @@ namespace Ryujinx.Modules return result; } - private static async void UpdateRyujinx(Window parent, string downloadUrl) + private static async Task UpdateRyujinx(Window parent, string downloadUrl) { _updateSuccessful = false; @@ -579,27 +568,24 @@ namespace Ryujinx.Modules } } - private static async void InstallUpdate(TaskDialog taskDialog, string updateFile) + private static void InstallUpdate(TaskDialog taskDialog, string updateFile) { // Extract Update taskDialog.SubHeader = LocaleManager.Instance[LocaleKeys.UpdaterExtracting]; taskDialog.SetProgressBarState(0, TaskDialogProgressState.Normal); - await Task.Run(() => + if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) { - if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) - { - ExtractTarGzipFile(taskDialog, updateFile, _updateDir); - } - else if (OperatingSystem.IsWindows()) - { - ExtractZipFile(taskDialog, updateFile, _updateDir); - } - else - { - throw new NotSupportedException(); - } - }); + ExtractTarGzipFile(taskDialog, updateFile, _updateDir); + } + else if (OperatingSystem.IsWindows()) + { + ExtractZipFile(taskDialog, updateFile, _updateDir); + } + else + { + throw new NotSupportedException(); + } // Delete downloaded zip File.Delete(updateFile); @@ -613,36 +599,33 @@ namespace Ryujinx.Modules if (!OperatingSystem.IsMacOS()) { // Replace old files - await Task.Run(() => + double count = 0; + foreach (string file in allFiles) { - double count = 0; - foreach (string file in allFiles) + count++; + try { - count++; - try - { - File.Move(file, file + ".ryuold"); + File.Move(file, file + ".ryuold"); - Dispatcher.UIThread.Post(() => - { - taskDialog.SetProgressBarState(GetPercentage(count, allFiles.Count), TaskDialogProgressState.Normal); - }); - } - catch + Dispatcher.UIThread.InvokeAsync(() => { - Logger.Warning?.Print(LogClass.Application, LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.UpdaterRenameFailed, file)); - } + taskDialog.SetProgressBarState(GetPercentage(count, allFiles.Count), TaskDialogProgressState.Normal); + }); } - - Dispatcher.UIThread.Post(() => + catch { - taskDialog.SubHeader = LocaleManager.Instance[LocaleKeys.UpdaterAddingFiles]; - taskDialog.SetProgressBarState(0, TaskDialogProgressState.Normal); - }); + Logger.Warning?.Print(LogClass.Application, LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.UpdaterRenameFailed, file)); + } + } - MoveAllFilesOver(_updatePublishDir, _homeDir, taskDialog); + Dispatcher.UIThread.InvokeAsync(() => + { + taskDialog.SubHeader = LocaleManager.Instance[LocaleKeys.UpdaterAddingFiles]; + taskDialog.SetProgressBarState(0, TaskDialogProgressState.Normal); }); + MoveAllFilesOver(_updatePublishDir, _homeDir, taskDialog); + Directory.Delete(_updateDir, true); } @@ -658,12 +641,11 @@ namespace Ryujinx.Modules { if (showWarnings) { - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateWarningDialog( + Dispatcher.UIThread.InvokeAsync(() => + ContentDialogHelper.CreateWarningDialog( LocaleManager.Instance[LocaleKeys.DialogUpdaterArchNotSupportedMessage], - LocaleManager.Instance[LocaleKeys.DialogUpdaterArchNotSupportedSubMessage]); - }); + LocaleManager.Instance[LocaleKeys.DialogUpdaterArchNotSupportedSubMessage]) + ); } return false; @@ -673,12 +655,11 @@ namespace Ryujinx.Modules { if (showWarnings) { - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateWarningDialog( + Dispatcher.UIThread.InvokeAsync(() => + ContentDialogHelper.CreateWarningDialog( LocaleManager.Instance[LocaleKeys.DialogUpdaterNoInternetMessage], - LocaleManager.Instance[LocaleKeys.DialogUpdaterNoInternetSubMessage]); - }); + LocaleManager.Instance[LocaleKeys.DialogUpdaterNoInternetSubMessage]) + ); } return false; @@ -688,12 +669,11 @@ namespace Ryujinx.Modules { if (showWarnings) { - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateWarningDialog( + Dispatcher.UIThread.InvokeAsync(() => + ContentDialogHelper.CreateWarningDialog( LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildMessage], - LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildSubMessage]); - }); + LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildSubMessage]) + ); } return false; @@ -705,21 +685,19 @@ namespace Ryujinx.Modules { if (ReleaseInformation.IsFlatHubBuild()) { - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateWarningDialog( + Dispatcher.UIThread.InvokeAsync(() => + ContentDialogHelper.CreateWarningDialog( LocaleManager.Instance[LocaleKeys.UpdaterDisabledWarningTitle], - LocaleManager.Instance[LocaleKeys.DialogUpdaterFlatpakNotSupportedMessage]); - }); + LocaleManager.Instance[LocaleKeys.DialogUpdaterFlatpakNotSupportedMessage]) + ); } else { - Dispatcher.UIThread.Post(async () => - { - await ContentDialogHelper.CreateWarningDialog( + Dispatcher.UIThread.InvokeAsync(() => + ContentDialogHelper.CreateWarningDialog( LocaleManager.Instance[LocaleKeys.UpdaterDisabledWarningTitle], - LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildSubMessage]); - }); + LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildSubMessage]) + ); } } |