亮点与主要变更
本版本修复 Windows 端 Claude Desktop 4.4212+ 安装补丁后应用无法启动 的问题(Issue #225),同时保持对旧版本的完全兼容。
1. 支持 JSON 转义形式的 ASAR 完整性标记(合入 #226 by @Oct1AtJoe,修复 #225)
问题背景:Claude Desktop 4.4212 把 Claude.exe 里内嵌的 ASAR integrity 记录改成了带 "file": 前缀的 JSON 对象形式:
旧:resources\\ion-dist.asar","alg":"SHA256","value":"<hash>"
新:{"file":"resources\\ion-dist.asar","alg":"SHA256","value":"<hash>"}
旧安装器按固定字符串查找,在 4.4212 上命中 0 次,Sync-ClaudeExeAsarIntegrity 抛异常。更严重的是:失败发生在 ion-dist.asar 已解包、汉化、重打包并写回磁盘之后,导致 asar 与 exe 内嵌哈希不一致,应用启动时完整性校验失败、直接打不开。
修复内容:
- 新增
Get-ClaudeExeIntegrityMarker,按优先级探测所有已知标记形态:{"file":"resources\\<name>","alg":"SHA256","value":"— 4.4212+resources\\<name>","alg":"SHA256","value":"— 旧版双反斜杠{"file":"resources/<name>","alg":"SHA256","value":"— 正斜杠变体resources/<name>","alg":"SHA256","value":"— 正斜杠裸路径
- 保留原有的唯一性检查与边界校验,命中后哈希写回逻辑不变;
- 新增 JSON 转义格式的回归测试,旧格式测试继续保留。
验证:
- 真实 4.4212 exe 只读探测:新旧标记均正确定位,内嵌哈希与
SHA256(HeaderString)一致; - 新增 ASAR 完整性测试用例通过,Windows / Ubuntu CI 全部通过。
已知遗留(非本版本回归,后续跟进):
标记定位仍发生在 asar 重打包之后。若未来标记格式再次变化,仍可能出现「asar 已改、exe 未同步」的半坏状态;更稳妥的做法是在解包 asar 之前先校验标记,失败即零副作用退出。
验证与测试
- Python 回归测试 16 项全部 PASS;
- Windows PowerShell 5.1 / PowerShell 7 六个脚本测试全部 PASS;
git diff --check无格式问题。