包体更新规则
本文为 TapTap PC 游戏更新机制 的参考部分,说明 TapTap 分发更新时,包体内文件与目录的处理规则。增量更新与差量更新的生效条件,见更新机制中的 增量更新与差量更新。
TapTap 分发更新时,会对比新旧版本包体,按以下规则处理文件与目录的新增、删除与修改。遵循这些规则有助于生成更小的补丁、避免误删运行期数据。
文件规则
| 旧版本文件状态 | 新版本文件状态 | TapTap 行为 | 说明 |
|---|---|---|---|
| ❌ 不存在 | ✅ 存在 | 下载新文件 | |
| ✅ 存在 | ❌ 不存在 | 删除文件 | 不校验旧版本文件内容(即使在运行期被修改,也会删除) |
| ✅ 存在 | ✅ 存在且内容相同 | 忽略 | 不校验旧版本文件内容(即使在运行期被修改,也会忽略) |
| ✅ 存在 | ✅ 存在且内容不同 | 仅下载差异块 | 不校验旧版本文件内容;请确保旧版本文件在运行期未被改写 |
| ❌ 不存在 | ❌ 不存在 | 保留文件 | 运行期生成的文件不会被删除或修改 |
目录规则
包体中的目录(包括空目录)会随包体一起被记录。新旧版本之间的目录差异按以下规则处理:
| 旧版本目录状态 | 新版本目录状态 | TapTap 行为 | 说明 |
|---|---|---|---|
| ❌ 不存在 | ✅ 存在 | 创建空目录 | 安装 / 更新前 TapTap 会按新版本目录结构提前创建好整个目录树 |
| ✅ 存在 | ❌ 不存在 | 递归删除整个目录 | 目录下任何运行期写入的内容(日志、缓存、用户数据等)也会一并被删除 |
| ✅ 存在 | ✅ 存在 | 保留 | 目录本身不动;目录内文件按上节「文件规则」处理 |
警告
若某个目录在新版本中被移除,TapTap 会整体清理该目录,目 录下运行期写入的文件也会被一并删除。涉及用户数据 / 存档的目录,请从一开始就放在包体之外的专用目录,避免后续版本调整目录结构时被误删。
开发者最佳实践
存档与用户数据
- 将游戏存档放置于专用目录(例如
Saves/),并在打包时排除该目录。 - 将玩家个性化配置(键位、画质、语言等)放置于专用目录(例如
UserSettings/),并排除在包体之外。 - 切勿将用户数据放进包体已包含的目录——若该目录在后续版本被移除,目录下运行期写入的数据将一并被清理。
包内容
- 只读原则:包体内文件运行期保持只读,禁止动态改写。
- 路径稳定:相同资源在不同版本中保持一致的相对路径与文件名;目录结构尽量保持稳定,避免在版本间整体重命名或删除目录。
- 移除冗余资源:删除不再使用的旧资源文件,减小补丁体积。
获得最佳增量 / 差量效果
- 相同文件保持路径与文件名不变。
- 不在目录结构中携带版本号信息。
- 旧版本文件在运行期不得被改写。
- 通过版本控制系统精确管理资源变动,避免临时文件进入包体。