diff --git a/src/MeoAsstGui/Resources/Localizations/en-us.xaml b/src/MeoAsstGui/Resources/Localizations/en-us.xaml
index 88269682d1..6046de1cf7 100644
--- a/src/MeoAsstGui/Resources/Localizations/en-us.xaml
+++ b/src/MeoAsstGui/Resources/Localizations/en-us.xaml
@@ -123,6 +123,7 @@
Auto check update
Auto download update
Beta release
+ Nightly release
Download via aria2
Check update
diff --git a/src/MeoAsstGui/Resources/Localizations/zh-cn.xaml b/src/MeoAsstGui/Resources/Localizations/zh-cn.xaml
index c13cae3ad3..3019a48f59 100644
--- a/src/MeoAsstGui/Resources/Localizations/zh-cn.xaml
+++ b/src/MeoAsstGui/Resources/Localizations/zh-cn.xaml
@@ -123,6 +123,7 @@
自动检查更新
自动下载更新包
检查测试版本更新
+ 检查内测版本更新
使用 aria2 进行下载
检查更新
diff --git a/src/MeoAsstGui/UserControl/VersionUpdateSettingsUserControl.xaml b/src/MeoAsstGui/UserControl/VersionUpdateSettingsUserControl.xaml
index c6e7871ca6..026ec8871c 100644
--- a/src/MeoAsstGui/UserControl/VersionUpdateSettingsUserControl.xaml
+++ b/src/MeoAsstGui/UserControl/VersionUpdateSettingsUserControl.xaml
@@ -43,6 +43,13 @@
Content="{DynamicResource UpdateCheckBeta}"
IsChecked="{Binding UpdateBeta}"
IsEnabled="{Binding UpdateCheck}" />
+
+ /// Gets or sets a value indicating whether to update nightly.
+ ///
+ public bool UpdateNightly
+ {
+ get => _updateNightly;
+ set
+ {
+ SetAndNotify(ref _updateNightly, value);
+ ViewStatusStorage.Set("VersionUpdate.UpdateNightly", value.ToString());
+ }
+ }
+
private bool _updateBeta = Convert.ToBoolean(ViewStatusStorage.Get("VersionUpdate.UpdateBeta", bool.FalseString));
///
diff --git a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs
index 6c5888faae..06e0f549e6 100644
--- a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs
+++ b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs
@@ -413,14 +413,14 @@ namespace MeoAsstGui
/// 操作成功返回 ,反之则返回 。
public bool CheckUpdate(bool force = false)
{
- // 开发版不检查更新
- if (!force && !isStableVersion())
+ var settings = _container.Get();
+ if (!settings.UpdateCheck)
{
return false;
}
- var settings = _container.Get();
- if (!settings.UpdateCheck)
+ // 开发版不检查更新
+ if (!settings.UpdateNightly && !force && !isStableVersion())
{
return false;
}
@@ -444,7 +444,12 @@ namespace MeoAsstGui
_latestJson = null;
foreach (var item in releaseArray)
{
- if (!settings.UpdateBeta && (bool)item["prerelease"])
+ if (!settings.UpdateNightly && isStableVersion(item["tag_name"].ToString()))
+ {
+ continue;
+ }
+
+ if (!settings.UpdateNightly && !settings.UpdateBeta && (bool)item["prerelease"])
{
continue;
}
@@ -464,18 +469,28 @@ namespace MeoAsstGui
return false;
}
- 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 (settings.UpdateNightly)
{
- if (curVersionObj.CompareSortOrderTo(latestVersionObj) >= 0)
+ if (_curVersion == _latestVersion)
{
return false;
}
}
- else if (string.CompareOrdinal(_curVersion, _latestVersion) >= 0)
+ else
{
- return false;
+ 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)
+ {
+ return false;
+ }
+ }
+ else if (string.CompareOrdinal(_curVersion, _latestVersion) >= 0)
+ {
+ return false;
+ }
}
if (!_latestJson.ContainsKey("assets") || (_latestJson["assets"] as JArray).Count == 0)
@@ -692,7 +707,7 @@ namespace MeoAsstGui
return true;
}
- private bool isStableVersion()
+ private bool isStableVersion(string version = null)
{
// 正式版:vX.X.X
// DevBuild (CI):yyyy-MM-dd-HH-mm-ss-{CommitHash[..7]}
@@ -701,23 +716,28 @@ namespace MeoAsstGui
// Release (Local Tag):{Tag}-Local
// Debug (Local):DEBUG VERSION
// Script Compiled:c{CommitHash[..7]}
- if (_curVersion == "DEBUG VERSION")
+ if (version == null)
+ {
+ version = _curVersion;
+ }
+
+ if (version == "DEBUG VERSION")
{
return false;
}
- if (_curVersion.StartsWith("c"))
+ if (version.StartsWith("c"))
{
return false;
}
- if (_curVersion.Contains("Local"))
+ if (version.Contains("Local"))
{
return false;
}
var pattern = @"v((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)";
- var match = Regex.Match(_curVersion, pattern);
+ var match = Regex.Match(version, pattern);
if (match.Success is false)
{
return false;