diff --git a/Netch/Controllers/UpdateChecker.cs b/Netch/Controllers/UpdateChecker.cs index 4a026062..78b8035c 100644 --- a/Netch/Controllers/UpdateChecker.cs +++ b/Netch/Controllers/UpdateChecker.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Net; using Netch.Models.GitHubRelease; using Netch.Utils; @@ -22,7 +23,7 @@ namespace Netch.Controllers public string LatestVersionNumber; public string LatestVersionUrl; - public string LatestVersionDownloadUrl; + public Release LatestRelease; public event EventHandler NewVersionFound; public event EventHandler NewVersionFoundFailed; @@ -38,12 +39,11 @@ namespace Netch.Controllers var json = await WebUtil.DownloadStringAsync(WebUtil.CreateRequest(url)); var releases = JsonConvert.DeserializeObject>(json); - var latestRelease = VersionUtil.GetLatestRelease(releases, isPreRelease); - LatestVersionNumber = latestRelease.tag_name; - LatestVersionUrl = latestRelease.html_url; - LatestVersionDownloadUrl = latestRelease.assets[0].browser_download_url; - Logging.Info($"Github 最新发布版本: {latestRelease.tag_name}"); - if (VersionUtil.CompareVersion(latestRelease.tag_name, Version) > 0) + LatestRelease = VersionUtil.GetLatestRelease(releases, isPreRelease); + LatestVersionNumber = LatestRelease.tag_name; + LatestVersionUrl = LatestRelease.html_url; + Logging.Info($"Github 最新发布版本: {LatestRelease.tag_name}"); + if (VersionUtil.CompareVersion(LatestRelease.tag_name, Version) > 0) { Logging.Info("发现新版本"); NewVersionFound?.Invoke(this, new EventArgs()); diff --git a/Netch/Forms/MainForm.Misc.cs b/Netch/Forms/MainForm.Misc.cs index 0984c77c..6ee45df1 100644 --- a/Netch/Forms/MainForm.Misc.cs +++ b/Netch/Forms/MainForm.Misc.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using System.Diagnostics; using System.IO; +using System.Linq; using System.Text.RegularExpressions; using System.Windows.Forms; using Netch.Controllers; @@ -36,7 +37,7 @@ namespace Netch.Forms private async void NewVersionLabel_Click(object sender, EventArgs e) { - if (!_updater.LatestVersionDownloadUrl.Contains("Netch")) + if (!_updater.LatestRelease.assets.Any()) { Utils.Utils.Open(_updater.LatestVersionUrl); return; @@ -46,11 +47,12 @@ namespace Netch.Forms return; NotifyTip(i18N.Translate("Start downloading new version")); + var latestVersionDownloadUrl = _updater.LatestRelease.assets[0].browser_download_url; var tagPage = await WebUtil.DownloadStringAsync(WebUtil.CreateRequest(_updater.LatestVersionUrl)); var match = Regex.Match(tagPage, @"(?.*)", RegexOptions.Singleline); // TODO Replace with regex get basename and sha256 - var fileName = Path.GetFileName(new Uri(_updater.LatestVersionDownloadUrl).LocalPath); + var fileName = Path.GetFileName(new Uri(latestVersionDownloadUrl).LocalPath); fileName = fileName.Insert(fileName.LastIndexOf('.'), _updater.LatestVersionNumber); var fileFullPath = Path.Combine(Global.NetchDir, "data", fileName); @@ -70,7 +72,7 @@ namespace Netch.Forms } // TODO Replace "New Version Found" to Progress bar - await WebUtil.DownloadFileAsync(WebUtil.CreateRequest(_updater.LatestVersionDownloadUrl), fileFullPath); + await WebUtil.DownloadFileAsync(WebUtil.CreateRequest(latestVersionDownloadUrl), fileFullPath); if (Utils.Utils.SHA256CheckSum(fileFullPath) != sha256) {