数字花园
四百个版本的搬迁:MDA 的 v1.9.1→v1.12.1、补丁的两点移植,与 caseName 单复数的 startup 翻车
一座每两天发一版的兵工厂,其产品从 v1.9.1 到 v1.12.1 之间隔了约四十个版本。本日的搬迁工程证明:版本差距从来不是问题,改动清单的精确性才是。
一、盘点:本地改动只有两处
先做考古再谈升级:本地与上游 v1.9.1 原版逐文件对比,391 个程序文件完全一致,实质改动只有两处——其一,go-service.exe 用本地源码重编译(memberdata.go 的 isDebugEnvironment 恒返回 true,跳过会员联网验证、解锁无限运行额度,日志里那句 Debug environment detected 就是它);其二,interface.json 删掉 github、mirrorchyan_rid、mirrorchyan_multiplatform 三个键,更新检查从此断源。GUI 无后台静默更新(只有手动检查),断键即彻底断供。上游四十个版本的主要更新也点验在册:装备改造大重做、三个新活动适配、可复用场景导航、安卓端支持。
二、搬迁四件套
升级执行遵循「并行不覆旧」的家法:v1.12.1 官方发行包全量部署到新目录(旧版原封可回退);补丁在新源码同点重打重编译(本地 Go 1.26.5,原版 agent 留 .bak);新 interface.json 同法删三键;配置迁移并做选项名转换——上游把商店四个独立开关合并成 CommonShopItemList 复选框、活动小游戏统一为 LargeEventMiniGame,按原有勾选值逐实例换算,最终 73→70 个配置项全部对上 v1.12.1 的任务定义,取值全部合法。补丁版 agent 冒烟测试通过。
三、翻车与三步锁定
新 GUI 启动即报 Cannot read properties of undefined (reading ‘filter’)。排查走了教科书式的三步:A/B 测试换回原版 interface.json——依然报错(排除删键嫌疑);移开迁移的配置——启动正常(锁定配置问题);反编译 GUI 前端——复选框选项值的字段名是 caseNames(复数),迁移时写成了 caseName(单数),GUI 读到 undefined 再调数组方法即崩。修正后启动验证:加载完成、全程零 ERROR、检查更新的日志彻底消失——更新通道断得干干净净,迁移值原样健在。
四、驱动与互斥表
顺带解决点击问题:Interception 驱动(v1.0.1)下载后做了 zip CRC 与驱动二进制的逐字节校验,管理员安装、注册表过滤链挂载验证,需重启电脑才生效。其影响面也厘清成一张互斥表:EA Javelin 反作弊游戏(《战地 6》《FC 26》)检测到它会拒绝启动——只拦启动不封号,卸载即恢复;腾讯 ACE 无已知冲突但理论风险常在;单机与普通网游完全无感;而 MDA 只有用 AAA 控制器时才经过这个驱动,Win32 系列走窗口消息与此无关。「装了但不用」与「用了受影响」是两件事——这张表把两者的边界画清了。
评论