private void VersionChecker_CheckVersionComplete(object sender, CheckVersionCompleteEventArgs e) { string latestVersionText; if (string.IsNullOrEmpty(e.Version)) { latestVersionText = "Unable to check for updates"; } else if (e.IsNew) { latestVersionText = "New version available!"; } else { latestVersionText = "You have the latest version"; } this.viewModel.UpdateUrl = e.GitHubReleaseUrl; this.Dispatcher.Invoke(() => { Run run = new Run(latestVersionText); this.LatestVersion.Inlines.Clear(); this.LatestVersion.Inlines.Add(run); }, DispatcherPriority.Render); }
private async void VersionChecker_CheckVersionComplete(object sender, CheckVersionCompleteEventArgs e) { if (!ShouldDownload(Settings.Current.UpdateDeliveryMode) || !e.IsNew) { return; } if (string.IsNullOrWhiteSpace(e.GitHubReleaseDownloadUrl)) { this.AutoUpdateFailed?.Invoke(this, e); } else { using (WebClient webClient = new WebClient()) { webClient.Proxy = App.ProxyConfig.CreateWebProxy(); try { if (Directory.Exists(UpdateDownloadPath)) { Directory.Delete(UpdateDownloadPath, true); } Directory.CreateDirectory(UpdateDownloadPath); string filePath = Path.Combine(UpdateDownloadPath, "ToastifyInstaller.exe"); await webClient.DownloadFileTaskAsync(e.GitHubReleaseDownloadUrl, filePath).ConfigureAwait(false); if (File.Exists(filePath)) { UpdateReadyEventArgs updateReadyEventArgs = new UpdateReadyEventArgs { Version = e.Version, InstallerPath = filePath, GitHubReleaseUrl = e.GitHubReleaseUrl }; this.UpdateReady?.Invoke(this, updateReadyEventArgs); } else { this.AutoUpdateFailed?.Invoke(this, e); } } catch (Exception ex) { logger.Error("Unknown error while downloading new update.", ex); this.AutoUpdateFailed?.Invoke(this, e); } } } }
private void CheckVersion() { try { string latestTagName = null; Release latest = this.gitHubAPI.GetLatestRelease(App.RepoInfo); if (latest.HttpStatusCode == HttpStatusCode.OK) { latestTagName = latest.TagName; } string sRemoteVersion = string.Empty; bool isNewVersion = false; if (!string.IsNullOrWhiteSpace(latestTagName)) { var match = Regex.Match(latestTagName, @"(\d+\.?)+", RegexOptions.IgnoreCase | RegexOptions.Singleline); if (match.Success) { sRemoteVersion = match.Value; Version localVersion = new Version(App.CurrentVersionNoRevision); Version remoteVersion = new Version(sRemoteVersion); isNewVersion = localVersion.CompareTo(remoteVersion) < 0; } } CheckVersionCompleteEventArgs e = new CheckVersionCompleteEventArgs { Version = sRemoteVersion, IsNew = isNewVersion, GitHubReleaseId = latest.Id, GitHubReleaseUrl = latest.HtmlUrl, GitHubReleaseDownloadUrl = latest.Assets.FirstOrDefault(asset => asset.Name == "ToastifyInstaller.exe")?.DownloadUrl }; this.CheckVersionComplete?.Invoke(this, e); } catch (Exception ex) { logger.Error("Unknown error while checking for updates.", ex); } finally { Settings.Current.LastVersionCheck = DateTime.Now; Settings.Current.Save(); this.checkVersionTimer?.Change(CalcCheckVersionDueTime(), new TimeSpan(-1)); } }