mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-18 18:20:39 +08:00
feat: 增加内测版本更新 GUI 选项
勾选内测版更新后,在 MaaRelease 仓库中若最新者不是当前版本,则直接使用该版本。 测试版和稳定版检测版本号是否为v开头的版本,内测版不做检查。
This commit is contained in:
@@ -123,6 +123,7 @@
|
||||
<system:String x:Key="UpdateAutoCheck">Auto check update</system:String>
|
||||
<system:String x:Key="UpdateAutoDownload">Auto download update</system:String>
|
||||
<system:String x:Key="UpdateCheckBeta">Beta release</system:String>
|
||||
<system:String x:Key="UpdateCheckNightly">Nightly release</system:String>
|
||||
<system:String x:Key="DownloadWithAria2">Download via aria2</system:String>
|
||||
<system:String x:Key="UpdateCheckNow">Check update</system:String>
|
||||
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
<system:String x:Key="UpdateAutoCheck">自动检查更新</system:String>
|
||||
<system:String x:Key="UpdateAutoDownload">自动下载更新包</system:String>
|
||||
<system:String x:Key="UpdateCheckBeta">检查测试版本更新</system:String>
|
||||
<system:String x:Key="UpdateCheckNightly">检查内测版本更新</system:String>
|
||||
<system:String x:Key="DownloadWithAria2">使用 aria2 进行下载</system:String>
|
||||
<system:String x:Key="UpdateCheckNow">检查更新</system:String>
|
||||
|
||||
|
||||
@@ -43,6 +43,13 @@
|
||||
Content="{DynamicResource UpdateCheckBeta}"
|
||||
IsChecked="{Binding UpdateBeta}"
|
||||
IsEnabled="{Binding UpdateCheck}" />
|
||||
<CheckBox
|
||||
Margin="10"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Content="{DynamicResource UpdateCheckNightly}"
|
||||
IsChecked="{Binding UpdateNightly}"
|
||||
IsEnabled="{Binding UpdateCheck}" />
|
||||
<CheckBox
|
||||
Margin="10"
|
||||
HorizontalAlignment="Left"
|
||||
|
||||
@@ -1379,6 +1379,21 @@ namespace MeoAsstGui
|
||||
}
|
||||
|
||||
/* 软件更新设置 */
|
||||
private bool _updateNightly = Convert.ToBoolean(ViewStatusStorage.Get("VersionUpdate.UpdateNightly", bool.FalseString));
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether to update nightly.
|
||||
/// </summary>
|
||||
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));
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -413,14 +413,14 @@ namespace MeoAsstGui
|
||||
/// <returns>操作成功返回 <see langword="true"/>,反之则返回 <see langword="false"/>。</returns>
|
||||
public bool CheckUpdate(bool force = false)
|
||||
{
|
||||
// 开发版不检查更新
|
||||
if (!force && !isStableVersion())
|
||||
var settings = _container.Get<SettingsViewModel>();
|
||||
if (!settings.UpdateCheck)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var settings = _container.Get<SettingsViewModel>();
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user