Files
noname-shuying/tools/UPDATE.md
T
2026-10-29 14:45:51 +08:00

2.9 KiB

更新清单与可选模块

梦三模式

梦三仍与主包保存在同一仓库,但作为独立下载模块发布。基础清单 dist/manifest.json 不包含 mengsan/ 文件;模块清单 dist/modules/mengsan.json 单独记录梦三文件、大小和 SHA-256。

用户通过扩展菜单的“梦三模式(按需安装/卸载)”下载或卸载。主包版本 更新只检查主包文件,以及本地已安装模块的文件;“查漏补缺”会检查主包 资源和已安装模块,不会自动下载未安装的梦三模式。

发布流程

  1. 在 tools/manifest_config.json 的 core 中维护主包必须文件。
  2. 在 modules 中维护可选模块的目录、入口和显示名。
  3. 发布工作流为每个模块生成独立清单,并将清单提交到发布标签。
  4. 完整 ZIP 安装包仍包含所有模块,供离线或整包安装使用。

修改 extension.js 中的 shuYingLocalVersion,提交并推送到 GitHub 默认分支后,工作流会比较推送前后的版本号。版本号变化时自动生成和校验 清单、创建 v版本号 标签,并打包发布;同版本的代码修改不重复发布。 手动运行 GitHub 发布工作流也读取该次提交的版本号,无需再次填写版本。

版本格式为 2.0.2.4 或 2.0.2.4-rc.1;带 -rc.N 的 Release 标记为测试版,其他标记为正式版。已有同名标签时停止,避免覆盖旧发布。 Gitea 保持接收同一发布标签后打包的流程;使用 Gitea 更新源时,需将该 标签同步到 Gitea,单独推送分支代码不会触发 Gitea 发布。

客户端从标签的 raw 文件路径读取清单。因此 Gitea 发布必须使用已经包含 dist/manifest.json 和 dist/modules/*.json 的同一标签;当前 Gitea 工作流 会生成并上传附件,但不会改写触发它的标签。

发布时生成器会把 tools/legacy/mengsan-files.json、上一次完整清单和当前模块 文件合并,随新标签发布迁移路径清单。它用于接管旧安装中的梦三文件并清理 不再属于新版本的文件。该文件由迁移时仓库内的梦三路径生成,作为冻结的旧版 所有权记录,兼容旧更新器已经推进主包版本号、但尚未更新梦三模块的用户。

旧文件与目录

升级时比较旧版和新版的文件路径清单,删除旧清单有、新清单没有的模块文件; 新增或损坏文件会按 SHA-256 下载和修复。模块卸载只删除模块清单声明的文件。

不根据“目录不在新清单中”递归删除目录,避免误删用户自行放入目录的文件。 确需删除整个旧目录时,先确认其不包含用户数据,再通过主包清单的 removeDirectories 明确声明。

新增模块时,清单生成器可通过配置建立独立清单;客户端的安装菜单、启动 加载和卸载入口仍需为该模块添加对应管理逻辑。