private async Task <bool> DownloadCurrentProfileAsync() { var gameReleases = await CurrentProfile.GetAvailableReleasesAsync(); if (gameReleases.Any()) { var onlineRelease = gameReleases.First(release => release.Version == CurrentProfile.Version); switch (MessageBox.Show(string.Format(LocalizationUI.GetString("NotDownloaded"), CurrentProfile.Name), LocalizationUI.GetString("NotDownloadedTitle"), MessageBoxButtons.YesNo)) { case DialogResult.Yes: using (var directUpdater = new ReleaseDownloaderForm(onlineRelease.ReleaseAsset, CurrentProfile.Folder)) { var state = directUpdater.ShowDialog(); return(state != DialogResult.Abort && state != DialogResult.Cancel); } } } return(false); }
private async Task CheckProfileForUpdateAsync(bool onStartup = false) // -- onStartup - function is called on Launcher startup. { Log($"Checking Profile '{CurrentProfile.Name}' for updates..."); if (!onStartup && CurrentProfile.ExecutionFile == null) { Log($"Profile '{CurrentProfile.Name}' - execution file not found! It was not downloaded?"); await DownloadCurrentProfileAsync(); } if (CurrentProfile.ExecutionFile == null) { Log($"Something went wrong while checking the Profile '{CurrentProfile.Name}' - execution file not found!"); return; } var gameReleases = await CurrentProfile.GetAvailableReleasesAsync(); if (gameReleases.Any() && (!onStartup || CurrentProfile.IsDefault)) { var latestRelease = gameReleases.First(); if (CurrentProfile.IsDefault) { if (CurrentProfile.Version < latestRelease.Version) { Log($"Found a new Profile '{CurrentProfile.Name}' version [{latestRelease.Version}]!"); UpdateCurrentProfile(latestRelease); return; } } if (CurrentProfile.Version < latestRelease.Version || CurrentProfile.VersionExe < latestRelease.Version) { Log($"Found a new Profile '{CurrentProfile.Name}' version [{latestRelease.Version}]!"); UpdateCurrentProfile(latestRelease); } else if (CurrentProfile.VersionExe != new Version("0.0") && CurrentProfile.VersionExe != new Version("1.0.0.0") && CurrentProfile.VersionExe < CurrentProfile.Version) { Log($"The version of the execution file [{CurrentProfile.VersionExe}] of Profile '{CurrentProfile.Name}' does not correspond to the Profile version [{CurrentProfile.Version}]! An update is needed."); UpdateCurrentProfile(latestRelease); } else { if (!onStartup) { Log($"Profile '{CurrentProfile.Name}' is up to date."); MessageBox.Show(string.Format(LocalizationUI.GetString("ProfileUpToDate"), CurrentProfile.Name), LocalizationUI.GetString("ProfileUpToDateTitle"), MessageBoxButtons.OK); } } } else { if (!onStartup) { Log($"Error while checking Profile '{CurrentProfile.Name}'. Is Internet available?"); MessageBox.Show(LocalizationUI.GetString("NoInternet"), LocalizationUI.GetString("NoInternetTitle"), MessageBoxButtons.OK); } } }