From 1d7e194c26bd9bc6f5fcf2560e12632c940f897f Mon Sep 17 00:00:00 2001 From: zzyyyl Date: Thu, 27 Oct 2022 18:36:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/VersionUpdateViewModel.cs | 112 ++++++++++++++---- 1 file changed, 86 insertions(+), 26 deletions(-) diff --git a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs index 9fc9858dd9..fa8039971c 100644 --- a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs +++ b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs @@ -14,6 +14,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Globalization; using System.IO; using System.Net; using System.Runtime.InteropServices; @@ -226,6 +227,26 @@ namespace MeoAsstGui Directory.Delete(resourceDir, true); } + var paddleResourcePaths = new[] + { + "\\PaddleOCR", + "\\PaddleCharOCR", + "\\global\\txwy\\resource\\PaddleOCR", + "\\global\\YoStarEN\\resource\\PaddleOCR", + "\\global\\YoStarJP\\resource\\PaddleOCR", + "\\global\\YoStarKR\\resource\\PaddleOCR", + }; + + foreach (var path in paddleResourcePaths) + { + string paddleDir = resourceDir + path; + string oldPaddleDir = oldResourceDir + path; + if (Directory.Exists(paddleDir)) + { + CopyFilesRecursively(oldPaddleDir, paddleDir); + } + } + var uncopiedList = new List(); // 复制新版本的所有文件到当前路径下 @@ -418,21 +439,21 @@ namespace MeoAsstGui { var releaseArray = JsonConvert.DeserializeObject(response) as JArray; + _latestJson = null; foreach (var item in releaseArray) { - if ((bool)item["prerelease"]) + if (!settings.UpdateBeta && (bool)item["prerelease"]) { - if (settings.UpdateBeta) - { - _latestJson = item as JObject; - break; - } - } - else - { - _latestJson = item as JObject; - break; + continue; } + + _latestJson = item as JObject; + break; + } + + if (_latestJson == null) + { + return false; } _latestVersion = _latestJson["tag_name"].ToString(); @@ -441,10 +462,8 @@ namespace MeoAsstGui return false; } - Semver.SemVersion curVersionObj; - bool curParsed = Semver.SemVersion.TryParse(_curVersion, Semver.SemVersionStyles.AllowLowerV, out curVersionObj); - Semver.SemVersion latestVersionObj; - bool latestPared = Semver.SemVersion.TryParse(_latestVersion, Semver.SemVersionStyles.AllowLowerV, out latestVersionObj); + bool curParsed = Semver.SemVersion.TryParse(_curVersion, Semver.SemVersionStyles.AllowLowerV, out var curVersionObj); + bool latestPared = Semver.SemVersion.TryParse(_latestVersion, Semver.SemVersionStyles.AllowLowerV, out var latestVersionObj); if (curParsed && latestPared) { if (curVersionObj.CompareSortOrderTo(latestVersionObj) >= 0) @@ -457,29 +476,70 @@ namespace MeoAsstGui return false; } - if (!_latestJson.ContainsKey("assets") - || (_latestJson["assets"] as JArray).Count == 0) + if (!_latestJson.ContainsKey("assets") || (_latestJson["assets"] as JArray).Count == 0) { return false; } - _assetsObject = _latestJson["assets"][0] as JObject; - foreach (var curAssets in _latestJson["assets"] as JArray) + var releaseAssets = _latestJson["assets"] as JArray; + _assetsObject = null; + try { - var name = curAssets["name"].ToString(); - if (name.ToLower().Contains("ota")) + TimeSpan timeSpan = TimeSpan.FromDays(114); + foreach (var item in releaseArray) { - _assetsObject = curAssets as JObject; - break; + if (item["tag_name"].ToString() == _curVersion) + { + timeSpan = DateTime.Parse(_latestJson["published_at"].ToString()) + - DateTime.Parse(item["published_at"].ToString()); + break; + } + } + + // 14天内的版本更新先尝试下OTA + if (timeSpan < TimeSpan.FromDays(14)) + { + foreach (var curAssets in releaseAssets) + { + string name = curAssets["name"].ToString().ToLower(); + if (name.Contains("ota") && name.Contains("win")) + { + _assetsObject = curAssets as JObject; + break; + } + } + + if (_assetsObject != null) + { + return true; + } } } + catch (Exception e) + { + File.AppendAllText("gui.err.log", DateTime.Now.ToString() + " CheckUpdate | " + e.ToString() + Environment.NewLine); + } + + // 其它情况直接下载完整包 + long maxSize = 0; + foreach (var curAssets in releaseAssets) + { + var name = curAssets["name"].ToString().ToLower(); + long curSize = (long)curAssets["size"]; + if (curSize > maxSize && !name.Contains("debug") && name.Contains("win")) + { + maxSize = curSize; + _assetsObject = curAssets as JObject; + } + } + + return _assetsObject != null; } - catch (Exception) + catch (Exception e) { + File.AppendAllText("gui.err.log", DateTime.Now.ToString() + " CheckUpdate | " + e.ToString() + Environment.NewLine); return false; } - - return true; } /// From 14c3f1886fc262913ed106700274f7dc9f62b263 Mon Sep 17 00:00:00 2001 From: zzyyyl Date: Thu, 27 Oct 2022 18:46:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E5=8A=A0=E4=B8=80=E5=8F=A5=20TODO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/VersionUpdateViewModel.cs | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs index fa8039971c..aac9399957 100644 --- a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs +++ b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs @@ -219,31 +219,34 @@ namespace MeoAsstGui return false; } - string resourceDir = Directory.GetCurrentDirectory() + "\\resource"; - string oldResourceDir = Directory.GetCurrentDirectory() + "\\resource.old"; - if (Directory.Exists(resourceDir)) + // TODO: 等 CI 加了文件列表,到时候按照文件列表来,不在列表里的都删了 { - CopyFilesRecursively(resourceDir, oldResourceDir); - Directory.Delete(resourceDir, true); - } - - var paddleResourcePaths = new[] - { - "\\PaddleOCR", - "\\PaddleCharOCR", - "\\global\\txwy\\resource\\PaddleOCR", - "\\global\\YoStarEN\\resource\\PaddleOCR", - "\\global\\YoStarJP\\resource\\PaddleOCR", - "\\global\\YoStarKR\\resource\\PaddleOCR", - }; - - foreach (var path in paddleResourcePaths) - { - string paddleDir = resourceDir + path; - string oldPaddleDir = oldResourceDir + path; - if (Directory.Exists(paddleDir)) + string resourceDir = Directory.GetCurrentDirectory() + "\\resource"; + string oldResourceDir = Directory.GetCurrentDirectory() + "\\resource.old"; + if (Directory.Exists(resourceDir)) { - CopyFilesRecursively(oldPaddleDir, paddleDir); + CopyFilesRecursively(resourceDir, oldResourceDir); + Directory.Delete(resourceDir, true); + } + + var paddleResourcePaths = new[] + { + "\\PaddleOCR", + "\\PaddleCharOCR", + "\\global\\txwy\\resource\\PaddleOCR", + "\\global\\YoStarEN\\resource\\PaddleOCR", + "\\global\\YoStarJP\\resource\\PaddleOCR", + "\\global\\YoStarKR\\resource\\PaddleOCR", + }; + + foreach (var path in paddleResourcePaths) + { + string paddleDir = resourceDir + path; + string oldPaddleDir = oldResourceDir + path; + if (Directory.Exists(paddleDir)) + { + CopyFilesRecursively(oldPaddleDir, paddleDir); + } } }