Merge branch 'dev'

This commit is contained in:
DLmaster361
2025-08-12 16:27:36 +08:00
6 changed files with 68 additions and 17 deletions

View File

@@ -176,13 +176,8 @@ func compareVersions(v1, v2 string) int {
parts1 := parseVersionParts(v1) parts1 := parseVersionParts(v1)
parts2 := parseVersionParts(v2) parts2 := parseVersionParts(v2)
// 比较个组件 // 比较前三个组件 (major.minor.patch)
maxLen := len(parts1) for i := 0; i < 3; i++ {
if len(parts2) > maxLen {
maxLen = len(parts2)
}
for i := 0; i < maxLen; i++ {
var p1, p2 int var p1, p2 int
if i < len(parts1) { if i < len(parts1) {
p1 = parts1[i] p1 = parts1[i]
@@ -198,6 +193,32 @@ func compareVersions(v1, v2 string) int {
} }
} }
// 如果前三个组件相同比较beta版本号
var beta1, beta2 int
if len(parts1) > 3 {
beta1 = parts1[3]
}
if len(parts2) > 3 {
beta2 = parts2[3]
}
// 特殊处理beta版本比较
// - 如果一个是正式版(beta=0)另一个是beta版(beta>0),正式版更新
// - 如果都是beta版比较beta版本号
if beta1 == 0 && beta2 > 0 {
return 1 // 正式版比beta版更新
}
if beta1 > 0 && beta2 == 0 {
return -1 // beta版比正式版旧
}
// 都是正式版或都是beta版直接比较
if beta1 < beta2 {
return -1
} else if beta1 > beta2 {
return 1
}
return 0 return 0
} }
@@ -265,6 +286,7 @@ func parseVersionParts(version string) []int {
break break
} }
} }
// Beta版本号保持正数但在比较时会特殊处理
parts = append(parts, betaNum) parts = append(parts, betaNum)
} else { } else {
// 非beta版本添加0作为beta版本号 // 非beta版本添加0作为beta版本号

View File

@@ -563,7 +563,7 @@ func (app *Application) executeCheckingState() (UpdateState, error) {
default: default:
fmt.Printf("检查更新类别:%v\n", updateChannel) fmt.Printf("检查更新类别:%v\n", updateChannel)
} }
fmt.Printf("当前版本:%v\n", currentVer) fmt.Printf("当前版本:%s\n", app.formatVersionForDisplay(currentVer))
app.logger.Info("当前更新类别:" + updateChannel + ";当前版本:" + currentVer) app.logger.Info("当前更新类别:" + updateChannel + ";当前版本:" + currentVer)
if err != nil { if err != nil {
app.logger.Error("检查更新失败: %v", err) app.logger.Error("检查更新失败: %v", err)
@@ -599,7 +599,7 @@ func (app *Application) executeCheckingState() (UpdateState, error) {
} }
app.logger.Info("有可用更新: %s -> %s", currentVer, response.Data.VersionName) app.logger.Info("有可用更新: %s -> %s", currentVer, response.Data.VersionName)
fmt.Printf("发现新版本: %s -> %s\n", currentVer, response.Data.VersionName) fmt.Printf("发现新版本: %s -> %s\n", app.formatVersionForDisplay(currentVer), response.Data.VersionName)
return StateUpdateAvailable, nil return StateUpdateAvailable, nil
} }
@@ -813,6 +813,20 @@ func (app *Application) formatBytes(bytes int64) string {
return fmt.Sprintf("%.1f %cB", float64(bytes)/float64(div), "KMGTPE"[exp]) return fmt.Sprintf("%.1f %cB", float64(bytes)/float64(div), "KMGTPE"[exp])
} }
// formatVersionForDisplay 将版本格式转换为用户友好的显示格式
// 例如: "4.4.1.3" -> "4.4.1-beta3", "4.4.1.0" -> "4.4.1"
func (app *Application) formatVersionForDisplay(version string) string {
// 尝试解析版本
parsedVersion, err := appversion.ParseVersion(version)
if err != nil {
// 如果解析失败,返回原始版本
return version
}
// 使用 ToDisplayVersion 方法转换为显示格式
return parsedVersion.ToDisplayVersion()
}
// handleUserInteraction 处理 GUI 模式的用户交互 // handleUserInteraction 处理 GUI 模式的用户交互
func (app *Application) handleUserInteraction(action string) { func (app *Application) handleUserInteraction(action string) {
switch action { switch action {

View File

@@ -147,12 +147,12 @@ func (pv *ParsedVersion) ToVersionString() string {
return fmt.Sprintf("%d.%d.%d.%d", pv.Major, pv.Minor, pv.Patch, pv.Beta) return fmt.Sprintf("%d.%d.%d.%d", pv.Major, pv.Minor, pv.Patch, pv.Beta)
} }
// ToDisplayVersion 将版本转换为显示格式 (v4.4.0 或 v4.4.1-beta3) // ToDisplayVersion 将版本转换为显示格式 (4.4.0 或 4.4.1-beta3)
func (pv *ParsedVersion) ToDisplayVersion() string { func (pv *ParsedVersion) ToDisplayVersion() string {
if pv.Beta == 0 { if pv.Beta == 0 {
return fmt.Sprintf("v%d.%d.%d", pv.Major, pv.Minor, pv.Patch) return fmt.Sprintf("%d.%d.%d", pv.Major, pv.Minor, pv.Patch)
} }
return fmt.Sprintf("v%d.%d.%d-beta%d", pv.Major, pv.Minor, pv.Patch, pv.Beta) return fmt.Sprintf("%d.%d.%d-beta%d", pv.Major, pv.Minor, pv.Patch, pv.Beta)
} }
// GetChannel 根据版本返回渠道 (stable 或 beta) // GetChannel 根据版本返回渠道 (stable 或 beta)
@@ -174,5 +174,16 @@ func (pv *ParsedVersion) IsNewer(other *ParsedVersion) bool {
if pv.Patch != other.Patch { if pv.Patch != other.Patch {
return pv.Patch > other.Patch return pv.Patch > other.Patch
} }
// 对于相同的主版本号正式版本Beta=0比beta版本Beta>0更新
// 例如4.4.1.0(正式版)> 4.4.1.3beta3
if pv.Beta == 0 && other.Beta > 0 {
return true // 正式版比beta版更新
}
if pv.Beta > 0 && other.Beta == 0 {
return false // beta版比正式版旧
}
// 如果都是beta版本比较beta版本号
return pv.Beta > other.Beta return pv.Beta > other.Beta
} }

View File

@@ -704,7 +704,7 @@ class GeneralSubConfig(LQConfig):
class AppConfig(GlobalConfig): class AppConfig(GlobalConfig):
VERSION = "4.4.2.1" VERSION = "4.4.2.0"
stage_refreshed = Signal() stage_refreshed = Signal()
PASSWORD_refreshed = Signal() PASSWORD_refreshed = Signal()

View File

@@ -1237,7 +1237,7 @@ class MaaManager(QObject):
else: else:
self.weekly_annihilation_limit_reached = False self.weekly_annihilation_limit_reached = False
if "任务出错: StartUp" in log: if "任务出错: StartUp" in log or "任务出错: 开始唤醒" in log:
self.maa_result = "MAA未能正确登录PRTS" self.maa_result = "MAA未能正确登录PRTS"
elif "任务已全部完成!" in log: elif "任务已全部完成!" in log:

View File

@@ -1,9 +1,13 @@
{ {
"main_version": "4.4.2.1", "main_version": "4.4.2.0",
"version_info": { "version_info": {
"4.4.2.1": { "4.4.2.0": {
"修复BUG": [
"修复独立更新器版本号比对问题",
"修复 MAA 开始唤醒识别错误问题"
],
"程序优化": [ "程序优化": [
"优化统计列表,支持上下滑动" "历史记录显示效果优化"
] ]
}, },
"4.4.1.0": { "4.4.1.0": {