fix: 解决自动更新无限重启循环 + 终点站列车不显示在预测列表
1. CloudServer: publishStationUpdate 发布时同步 Gitea 最新脚本到本地副本 - 新增 fetchGiteaScript() 一次下载全文 - 发布更新时将 Gitea 脚本内容写入 stationScriptPath - 保证 targetVersion 与 /downloads/station_broadcast.lua 内容版本一致 2. 客户端 AutoUpdate.apply: 下载后校验版本一致性 - 从下载内容正则提取 APP_VERSION_TEXT - 若 downloadedVersion ~= targetVersion 则中止更新,防止 reboot loop - 写入错误日志便于排查 3. 预测显示: 在站列车(尤其终点站)强制插入 upcomingTrains 列表头部 - CRN 可能从 TrainStops 提前移除终点站列车 - 使用 normalizeUpcomingKey 去重避免重复条目 - 固定 ETA=0,确保 CURREN T TRAIN 对应列车能在 UPCOMING 中可见 版本号 v1.0.68 -> v1.0.69
This commit is contained in:
@@ -2231,6 +2231,18 @@ function AutoUpdate.apply(info, reason)
|
||||
return false, err
|
||||
end
|
||||
|
||||
local downloadedVersion = nil
|
||||
do
|
||||
local m = string.match(body, 'local%s+APP_VERSION_TEXT%s*=%s*["\']([^"\']+)["\']')
|
||||
if m then downloadedVersion = Utils.trim(m) end
|
||||
end
|
||||
|
||||
if downloadedVersion and downloadedVersion ~= targetVersion then
|
||||
State.updateInProgress = false
|
||||
Utils.log("ERROR", "Downloaded version mismatch: target=" .. tostring(targetVersion) .. " got=" .. tostring(downloadedVersion) .. " - aborting update to prevent reboot loop")
|
||||
return false, "downloaded version mismatch (" .. tostring(downloadedVersion) .. " ~= " .. tostring(targetVersion) .. ")"
|
||||
end
|
||||
|
||||
local ok, writeErr = AutoUpdate.writeFile(startupPath, body)
|
||||
if not ok then
|
||||
State.updateInProgress = false
|
||||
|
||||
Reference in New Issue
Block a user