diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs index 47e5ba1d..8da6dea1 100644 --- a/Core/FormBrowser.cs +++ b/Core/FormBrowser.cs @@ -250,11 +250,11 @@ private void updates_CheckFinished(object sender, UpdateCheckEventArgs e){ }, ex => { if (!ignoreUpdateCheckError){ Program.Reporter.HandleException("Update Check Error", "An error occurred while checking for updates.", true, ex); - - ignoreUpdateCheckError = true; updates.StartTimer(); } }); + + ignoreUpdateCheckError = true; }); } @@ -274,7 +274,7 @@ private void updates_UpdateAccepted(object sender, UpdateEventArgs e){ UpdateInstallerPath = update.InstallerPath; ForceClose(); } - else if (FormMessage.Error("Update Has Failed", "Could not automatically download the update: "+(update.DownloadError?.Message ?? "unknown error")+"\n\nWould you like to open the website and try downloading the update manually?", FormMessage.Yes, FormMessage.No)){ + else if (status != UpdateDownloadStatus.Canceled && FormMessage.Error("Update Has Failed", "Could not automatically download the update: "+(update.DownloadError?.Message ?? "unknown error")+"\n\nWould you like to open the website and try downloading the update manually?", FormMessage.Yes, FormMessage.No)){ BrowserUtils.OpenExternalBrowser(Program.Website); ForceClose(); } diff --git a/Updates/FormUpdateDownload.cs b/Updates/FormUpdateDownload.cs index 9b85519f..d90c3979 100644 --- a/Updates/FormUpdateDownload.cs +++ b/Updates/FormUpdateDownload.cs @@ -22,6 +22,7 @@ private void btnCancel_Click(object sender, EventArgs e){ private void timerDownloadCheck_Tick(object sender, EventArgs e){ if (updateInfo.DownloadStatus.IsFinished()){ timerDownloadCheck.Stop(); + DialogResult = DialogResult.OK; Close(); } } diff --git a/Updates/UpdateDownloadStatus.cs b/Updates/UpdateDownloadStatus.cs index 7a47aad9..85de1b66 100644 --- a/Updates/UpdateDownloadStatus.cs +++ b/Updates/UpdateDownloadStatus.cs @@ -2,9 +2,10 @@ public enum UpdateDownloadStatus{ None = 0, InProgress, + Canceled, AssetMissing, - Done, - Failed + Failed, + Done } public static class UpdateDownloadStatusExtensions{ diff --git a/Updates/UpdateHandler.cs b/Updates/UpdateHandler.cs index d757fa5d..3be87a14 100644 --- a/Updates/UpdateHandler.cs +++ b/Updates/UpdateHandler.cs @@ -101,6 +101,10 @@ public void BeginUpdateDownload(Form ownerForm, UpdateInfo updateInfo, Action<Up }; downloadForm.FormClosed += (sender, args) => { + if (downloadForm.DialogResult != DialogResult.OK){ + updateInfo.CancelDownload(); + } + downloadForm.Dispose(); onFinished(updateInfo); }; diff --git a/Updates/UpdateInfo.cs b/Updates/UpdateInfo.cs index c7d02c74..f2953cd3 100644 --- a/Updates/UpdateInfo.cs +++ b/Updates/UpdateInfo.cs @@ -72,6 +72,11 @@ public void DeleteInstaller(){ } } + public void CancelDownload(){ + DeleteInstaller(); + DownloadStatus = UpdateDownloadStatus.Canceled; + } + public override bool Equals(object obj){ return obj is UpdateInfo info && VersionTag == info.VersionTag; }