Example #1
0
        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);
        }
Example #2
0
        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);
                    }
                }
            }
        }
Example #3
0
        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));
            }
        }