Files
noname-shuying/mengsan/docs/install-uninstall-fixes-20261004.md
T
Diuse 9e1732d2f8 fixed # 补全部分卡牌
fixed # 修复部分已知BUG
2026-10-04 19:32:38 +08:00

4.8 KiB

梦三安装、卸载与发布修复记录(2026-10-04)

本文件对应 install-uninstall-release-review-20261004.md 的问题修复。修改的是实际游戏源码;没有执行真实安装、卸载、标签推送或发布。

已修复的流程

原问题 当前处理
Gitea 在标签推送后生成清单,客户端无法从标签读取同一清单 发布流程只校验标签中已提交的清单;缺少清单、版本不符、资源哈希不符或内部导入缺失都会停止发布。
写入失败仍报告安装完成 统一识别字符串、Error、FileError 和写入事件错误;每次写入后读取并逐字节比对,模块完成后再校验全部文件的 SHA-256。
删除失败、网络失败或手机端提前回调 等待真实删除完成,再确认文件不存在;检查失败不会当成文件缺失;文件操作有超时处理。
卸载中断后仍注册残缺模式 删除前原子保存 uninstalling 和拥有的文件清单;重启后暂停注册,管理按钮可继续卸载。全部删除确认后才保存 disabled。
旧版清单不可用时改用最新版卸载,遗漏旧资源 正常安装保存本地所有权清单;完整 ZIP 也附带模块与迁移清单。卸载优先使用这些记录。明确的旧版本无法取回完整清单时停止操作,不猜测所有权。
回滚失败后仍删除恢复文件 每次操作使用独立临时目录;回滚失败时保留目录及旧文件,尽可能写入 recovery.json,安装记录保留恢复目录。

安装、更新和查漏补缺共享模块状态处理:首次文件改动前保存 installing;文件与安装记录均完成后才标为 installed。中断或最终记录保存失败时,保持待修复状态。回滚完整且此前已有可靠安装记录时,恢复此前状态。用户存档没有被删除。

IndexedDB 的两项安装配置在同一个事务中提交,并等待 oncomplete;本地存储环境一次写入配置字典。数据库写入失败不会切换到其他存储后端,也不会继续删文件。

网络响应丢失或写入超时可能留下未结束的文件操作,此时本次会话停止进一步文件改动,提示重启后修复,避免后到的回调覆盖另一次操作。恢复文件不被后续更新覆盖。

发布资源范围

清单生成器排除本地《杀戮尖塔 2》解包目录、mengsan/assets/sts2、依赖目录、运行日志、临时文件和环境配置;扫描时跳过这些目录,不再遍历其中数万个文件。

当前工作区资源清单:主包 278 个文件,梦三 457 个文件,共 735 个资源文件。旧版迁移清单记录 500 个已知梦三路径。版本暂保留 2.0.1.1-rc.1,没有替用户决定新发布版本或创建标签。

Gitea 正式发布步骤

  1. 设定正式要发布的版本号,更新 extension.js 中的版本,并提交全部运行源码、素材和发布工具。特别注意新增的梦三运行文件;只提交原先已跟踪文件会遗漏它们。

  2. 运行 tools/generate_manifest.bat,或者在扩展仓库中运行:

    python tools/prepare_release_manifest.py --root . --version 你的版本号
    

    工具要求源码已经提交,从 Git 快照生成和校验清单,避免 Windows 换行格式与标签内容不同。它不会创建标签、提交或推送。

  3. 提交 dist/manifest.json、dist/modules/mengsan.json 和 dist/modules/mengsan.legacy.json。主清单原有忽略规则仍存在,新仓库首次纳入主清单时需要明确加入该文件。

  4. 从包含这些清单的提交创建全新的对应版本标签,再推送。Gitea 工作流会对标签导出的文件重新校验,通过后才打包和发布。

GitHub 发布工作流继续从已提交的 Git 快照生成清单,在生成后和标签打包前各校验一次。两种完整 ZIP 都包含模块清单及旧版迁移清单,供本地所有权识别使用。

tools/generate_manifest.py 仍可生成工作区检查清单;这种清单不能直接当成正式标签清单,发布使用上述快照工具或 GitHub 工作流。

本次检查与验收边界

  • 修改后的 JavaScript 和三个 Python 工具通过语法检查。
  • 两份工作流中的 PowerShell 脚本、内嵌 Python 打包脚本通过语法检查。
  • 当前工作区的版本、文件集合、大小、SHA-256、模块归属、迁移清单及内部相对导入检查通过。
  • 安装、更新、查漏补缺和卸载的成功、失败、中断路径做了源码复核;没有执行游戏运行时探针或模拟验收。

实机仍需验证正常安装后重启、卸载后重启、安装中断后修复、卸载中断后续删,以及已有角色存档在卸载和重装后仍可使用。本次静态结果不代表这些实机流程已经验收。