feat: 添加预发布更新通道

This commit is contained in:
知一一 2025-06-08 14:05:01 +08:00
parent e4a4a3bbb8
commit 4f67007869
1 changed files with 49 additions and 8 deletions

View File

@ -106,6 +106,7 @@ global g_settings := Map(
"StoryModeAutoChoose", 1, ;剧情模式自动选择
;其他
"AutoCheckUpdate", 0, ;自动检查更新
"isPreRelease", 1, ;启用预发布通道
"AdjustSize", 0, ;启用画面缩放
"SelfClosing", 0, ;完成后自动关闭程序
"OpenBlablalink", 1, ;完成后打开Blablalink
@ -162,9 +163,9 @@ BtnClear.OnEvent("Click", (*) => LogBox.Value := "")
Tab := doroGui.Add("Tab3", "xm") ;由于autohotkey有bug只能这样写
Tab.Add(["设置", "任务", "商店", "战斗", "奖励", "日志"])
Tab.UseTab("设置")
cbAutoCheckUpdate := AddCheckboxSetting(doroGui, "AutoCheckUpdate", "自动检查更新", "R1.2")
doroGui.Tips.SetTip(cbAutoCheckUpdate, "勾选后DoroHelper 启动时会自动连接到 Github 检查是否有新版本`r`n请确保您的网络可以正常访问 Github")
cbAdjustSize := AddCheckboxSetting(doroGui, "AdjustSize", "启用窗口调整", "R1.2")
cbAutoCheckUpdate := AddCheckboxSetting(doroGui, "AutoCheckUpdate", "自动检查更新", "Section R1.2")
doroGui.Tips.SetTip(cbAutoCheckUpdate, "勾选后DoroHelper 启动时会自动连接到 Github 检查是否有新版本")
AddCheckboxSetting(doroGui, "isPreRelease", "测试版渠道", "x+5 R1.2")
doroGui.Tips.SetTip(cbAdjustSize, "勾选后DoroHelper运行前会尝试将窗口调整至合适的尺寸并在运行结束后还原")
cbOpenBlablalink := AddCheckboxSetting(doroGui, "OpenBlablalink", "任务完成后自动打开Blablalink", "R1.2")
doroGui.Tips.SetTip(cbOpenBlablalink, "勾选后,当 DoroHelper 完成所有已选任务后,会自动在您的默认浏览器中打开 Blablalink 网站")
@ -516,10 +517,41 @@ Initialization() {
CheckForUpdateHandler(isManualCheck) {
global currentVersion, usr, repo, latestObj ;确保能访问全局变量
try {
latestObj := Github.latest(usr, repo)
allReleases := Github.historicReleases(usr, repo) ; 获取所有版本
if !IsObject(allReleases) || !allReleases.Length {
if (isManualCheck) {
MsgBox("无法获取版本列表,请检查网络或仓库信息。", "检查更新错误", "IconX")
}
return
}
targetRelease := "" ; 用于存储我们最终选择的版本对象
if g_settings["isPreRelease"] {
; 用户希望接收预发布版本,直接取最新的(通常是列表的第一个)
targetRelease := allReleases[1]
AddLog("检查更新:当前设置为预发布版优先,最新版本为 " . targetRelease.version)
} else {
; 用户希望接收稳定版本,遍历查找最新的稳定版
AddLog("检查更新:当前设置为稳定版优先,正在查找...")
for release in allReleases {
; 简单的预发布版判断如果版本名不包含beta, alpha, rc等
if !(InStr(release.version, "beta") || InStr(release.version, "alpha") || InStr(release.version, "rc")) {
targetRelease := release
AddLog("找到最新稳定版:" . targetRelease.version)
break ; 找到最新的稳定版后即停止
}
}
if !IsObject(targetRelease) { ; 如果遍历后没有找到合适的稳定版
if (isManualCheck) {
MsgBox("未找到合适的稳定版本。", "检查更新")
}
AddLog("未找到合适的稳定版本。")
return
}
}
latestObj := targetRelease ; 将选定的版本赋给 latestObj 供后续使用
if (currentVersion != latestObj.version) {
MyGui := Gui("+Resize", "更新提示")
MyGui.Add("Text", "w300 xm ym", "DoroHelper存在更新版本:")
MyGui.Add("Text", "w300 xm ym", "DoroHelper存在更新版本 (" . (g_settings["isPreRelease"] ? "预发布" : "稳定") . "):") ; 提示版本类型
MyGui.Add("Text", "xp yp+20 w300", "版本号: " . latestObj.version)
MyGui.Add("Text", "xp yp+20 w300", "更新内容:")
MyEdit := MyGui.Add("Edit", "w250 h200 ReadOnly VScroll Border", latestObj.change_notes)
@ -532,7 +564,7 @@ CheckForUpdateHandler(isManualCheck) {
else {
;没有新版本
if (isManualCheck) { ;只有手动检查时才提示
MsgBox("当前Doro已是最新版本", "检查更新")
MsgBox("当前Doro (" . (g_settings["isPreRelease"] ? "预发布通道" : "稳定版通道") . ")已是最新版本: " . currentVersion, "检查更新")
}
}
}
@ -541,6 +573,7 @@ CheckForUpdateHandler(isManualCheck) {
if (isManualCheck) {
MsgBox("检查更新失败无法连接到Github或仓库信息错误`n(" githubError.Message ")", "检查更新错误", "IconX")
}
AddLog("检查更新失败: " . githubError.Message)
}
}
;tag 专用下载处理函数
@ -548,8 +581,16 @@ DownloadHandler(*) {
try {
downloadTempName := "DoroDownload.exe"
finalName := "DoroHelper-" latestObj.version ".exe"
; 执行下载(原下载代码)
Github.Download(latestObj.downloadURLs[1], A_ScriptDir "\" downloadTempName)
local downloadUrlToUse := ""
if IsObject(latestObj.downloadURLs) && latestObj.downloadURLs.Length > 0 {
downloadUrlToUse := latestObj.downloadURLs[1]
} else if IsObject(latestObj.downloadURL) { ; 兼容 historicReleases 返回的单个 downloadURL
downloadUrlToUse := latestObj.downloadURL
} else {
MsgBox("错误:找不到有效的下载链接。", "下载错误", "IconX")
return
}
Github.Download(downloadUrlToUse, A_ScriptDir "\" downloadTempName)
FileMove(A_ScriptDir "\" downloadTempName, A_ScriptDir "\" finalName, 1)
MsgBox("新版本已下载至当前目录: " finalName, "下载完成")
ExitApp