升级与热修

点一下、过一次 UAC 就到最新版;升不动的时候,该看哪一个文件。

📌这一页适用于你吗

你装的版本该怎么做
V6.1.0 及更新直接用下面的一键升级,不需要任何准备。
V6.0.10 及更早那些版本根本没有升级逻辑。手工装一次 6.1.x 的包,之后一键升级才开始可用。

装的是哪个版本,只看安装目录里的 version.txt。它是唯一权威——产物里没有任何编译进去的版本常量。

⬆️三个入口

  • 桌面网页——工具栏 ⬆️ →【立即升级】
  • 移动端菜单——⬆️ 软件更新
  • 启动器窗口——输入 U回车

三条路写的是同一个请求。全程只会弹一次 UAC,其余自动。

🔁点下去之后发生什么

#动作说明
1读 latest.json清单读不到时,退回热修清单的旧行为
2决策拒绝降级;低于 minSupported的版本会被要求装完整包
3后台下载绝不打断收听。SHA-256 校验通过后原子改名
4PTT 门禁正在发射就拒绝,返回 423;松开 PTT 再点
5停服务、装、起停掉服务子进程 → 一次 UAC → 静默安装 → 安装器拉起新版
6新版自己确认老启动器升级时已经退出,成功由新版在启动时记录

✅唯一成功判据

%LOCALAPPDATA%\MRRC\updates\state.json里的 lastResult.status == "ok"。

status含义你该做什么
ok已安装,并由新版确认不用管
installing静默安装已启动,老启动器正在退出等
uac_denied你拒绝了 UAC再点一次,并允许
ptt_active正在发射,被拒松开 PTT 再点
sha_mismatch安装包校验失败,已丢弃再点一次;什么都没装进去
download_failed网络 / 超时 / 权限,已自动重试等一会儿,或再点一次
missing_staged包还没下完就点了等一下;请求不会丢
install_failed安装器失败,或 version.txt没更新先看 updates\install-<版本>.log

🩹热修:不用重装

前端文件和可热修的模块单独下发。每次启动时启动器拉 patch.json,把文件覆盖到 %LOCALAPPDATA%\MRRC\patch\,而且发生在升级检查之前——所以热修连升级路径本身都能修。

重启 MRRC 即生效。范围是明确的(www/**、散装应用模块、vendor),其余一律随版本发布。

🎛️开关

[UPDATE] enabled = False完全不检查,热修也不再拉
[UPDATE] autoDownload = False只提示有新版,不后台预下载
MRRC_NO_UPDATE_CHECK=1环境变量,覆盖一切
MRRC_UPDATE_MANIFEST=<url>指向镜像或测试清单,不动生产

🛡️它绝不会做的事

  • 绝不降级。
  • 绝不在发射过程中安装。
  • 下载失败只删自己的临时文件——现有安装一个字节都不动。

还是卡着?把诊断包拿出来,里面已经含版本、升级状态和日志尾部。