diff --git a/SPTInstaller/SPTInstaller.csproj b/SPTInstaller/SPTInstaller.csproj index 7e24b3d..6c35921 100644 --- a/SPTInstaller/SPTInstaller.csproj +++ b/SPTInstaller/SPTInstaller.csproj @@ -10,8 +10,8 @@ icon.ico Assets\spt_installer.ico Debug;Release;TEST - 2.95 - 2.95 + 2.96 + 2.96 SPT diff --git a/SPTInstaller/ViewModels/PreChecksViewModel.cs b/SPTInstaller/ViewModels/PreChecksViewModel.cs index b09ebc6..8301c2c 100644 --- a/SPTInstaller/ViewModels/PreChecksViewModel.cs +++ b/SPTInstaller/ViewModels/PreChecksViewModel.cs @@ -244,29 +244,44 @@ public class PreChecksViewModel : ViewModelBase InstallButtonCheckState = StatusSpinner.SpinnerState.Running; var progress = new Progress((d) => { }); - - var SPTReleaseInfoFile = - await DownloadCacheHelper.GetOrDownloadFileAsync("release.json", DownloadCacheHelper.ReleaseMirrorUrl, - progress, DownloadCacheHelper.SuggestedTtl); - - if (SPTReleaseInfoFile == null) + + ReleaseInfo? sptReleaseInfo = null; + var retries = 1; + + while (retries >= 0) { - InstallButtonText = "Could not get SPT release metadata"; - InstallButtonCheckState = StatusSpinner.SpinnerState.Error; - return; + retries--; + + try + { + var sptReleaseInfoFile = + await DownloadCacheHelper.GetOrDownloadFileAsync("release.json", DownloadCacheHelper.ReleaseMirrorUrl, + progress, DownloadCacheHelper.SuggestedTtl); + + if (sptReleaseInfoFile == null) + { + InstallButtonText = "Could not get SPT release metadata"; + InstallButtonCheckState = StatusSpinner.SpinnerState.Error; + return; + } + + sptReleaseInfo = + JsonConvert.DeserializeObject(File.ReadAllText(sptReleaseInfoFile.FullName)); + } + catch (Exception) + { + DownloadCacheHelper.ClearMetadataCache(); + } } - - var SPTReleaseInfo = - JsonConvert.DeserializeObject(File.ReadAllText(SPTReleaseInfoFile.FullName)); - - if (SPTReleaseInfo == null) + + if (sptReleaseInfo == null) { InstallButtonText = "Could not parse latest SPT release"; InstallButtonCheckState = StatusSpinner.SpinnerState.Error; return; } - InstallButtonText = $"Start Install: SPT v{SPTReleaseInfo.SPTVersion}"; + InstallButtonText = $"Start Install: SPT v{sptReleaseInfo.SPTVersion}"; InstallButtonCheckState = StatusSpinner.SpinnerState.OK; AllowDetailsButton = true;