Skip to content

v3.4.2

Latest

Choose a tag to compare

@baozha2023 baozha2023 released this 26 Aug 06:20
· 15 commits to master since this release

终止旧版自动更新并提供安全数据迁移桥接

  • 将 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 完整性

  • 增加空游戏目录、中文路径、链接拒绝、目标路径安全、空间不足、重复导出、任务互斥、取消清理及原子覆盖测试