终止旧版自动更新并提供安全数据迁移桥接
-
将 v3.4.2 定位为最后一个可由旧版 NSIS 自动更新机制安装的版本
-
删除 UpdateService、更新 IPC、preload 更新接口、更新状态类型、更新弹窗及启动检查逻辑
-
移除 electron-updater 运行时依赖和对应测试,清理废弃更新设置字段
-
保留 electron-builder NSIS 构建、latest.yml、blockmap 和旧版更新前快照恢复能力
-
将设置页“检查更新”替换为始终可访问的“更新说明”
-
首次启动 v3.4.2 自动展示迁移公告,仅在主动关闭或成功导出后记录确认版本
-
公告明确说明后续版本需从官网重新下载,并提示先导出、成功导入后再手动卸载旧客户端
-
明确导出不会删除、移动或修改 config.json、games 和 db 源数据
-
导出成功后隐藏进度条,保留完成提示及备份文件路径
-
新增独立 MigrationExportService 和 MigrationActivityGuard
-
新增 migration:export、migration:cancel、migration:get-status、migration:acknowledge-notice 和 migration:event 接口
-
使用共享类型统一迁移状态、错误码、进度事件和公告版本
-
限制同一时间只能存在一个迁移导出请求
-
活动游戏、市场下载/安装或手动游戏导入存在时拒绝导出
-
导出期间阻止新的游戏启动、市场安装和游戏导入任务
-
只导出程序目录下的 config.json、games/ 和 db/,不复制外部游戏库
-
定义 .bzgames v1 格式,使用无压缩 7z 容器降低大型游戏迁移开销
-
固定归档根目录为 migration-manifest.json、config.json、games/ 和 db/
-
games/ 缺失时生成空目录,保持迁移格式契约稳定
-
config.json、db/ 或 db/bz_games.db 缺失及类型异常时拒绝导出
-
拒绝符号链接、目录联接、重解析路径和特殊文件
-
通过 realpath 阻止外部目录联接回程序目录的目标路径绕过
-
禁止将备份保存到程序根目录及其子目录
-
拒绝覆盖目录、符号链接等非普通目标文件
-
分别检查目标盘和临时盘空间,同卷时按归档及 SQLite 快照合计空间校验
-
新增 SQLite 排队维护窗口,导出前关闭数据库 worker 并包含最新 WAL 数据
-
在成功、取消和异常路径中统一恢复 SQLite 服务
-
先复制 config.json 和完整 db/ 到临时一致性快照,再读取程序目录 games/
-
先生成同目录 .partial 文件,通过 7za CRC 整包测试后再原子替换正式文件
-
替换失败时保留已有有效备份
-
取消时等待 7za 子进程完全退出后清理临时文件,避免文件句柄和清理竞态
-
失败和取消只删除临时快照及未完成文件,绝不删除源数据或已有有效备份
-
收紧迁移 IPC 错误输出,不向渲染进程暴露内部异常及源文件绝对路径
-
新增固定、可重复生成的 .bzgames v1 测试样本及 SHA-256 校验
-
验证归档 CRC、根目录白名单、清单字段、文件数量、字节数量和 SQLite 完整性
-
增加空游戏目录、中文路径、链接拒绝、目标路径安全、空间不足、重复导出、任务互斥、取消清理及原子覆盖测试