游戏存档备份/复原软件(Tauri + React + Ant Design)
当前版本已经具备可用的「配置管理 + 备份 + 备份列表 + 备注 + 删除 + 复原」主流程,但和最初的 prompt/框架.md 仍有若干差异(见下文对照表)。
- Windows 平台运行(Tauri 桌面应用)。
- 启动时初始化工作目录与配置文件:
{程序目录}/game-sl/config.json。 - 内置游戏配置模板(可在 UI 中新增/编辑游戏)。
- 路径模板占位符解析:
{AppData}、{Steam}、{SteamUID}、{Home}/{User}。 - 自动检测 Steam 安装目录与
userdata下可用 Steam UID 列表。 - 主界面游戏卡片展示、排序(上移/下移/置顶)。
- 主界面支持删除游戏(双击删除按钮 + 二次确认),并联动清理该游戏全部备份文件。
- 备份创建:
- 备份文件名:
{游戏名}-Backup-YYYYMMDD-HHMMSS.zip - 可选备注写入同名
.txt - 更新
lastSave
- 备份文件名:
- 备份列表:
- 扫描
backup目录 - 识别
.zip/.7z - 解析文件名时间戳,失败时回退文件修改时间排序
- 读取/编辑备注
- 扫描
- 删除备份:二次确认后将备份及同名备注送入回收站。
- 复原备份(已实现,不再是纯占位):
- 二次确认
- 可配置“复原前额外备份”(默认开启)
- 先删除现有存档(回收站)再解压
- 失败时尝试用额外备份回滚
- 设置页:
- 相对时间显示开关
- 复原前额外备份开关
- 软件信息页:版本信息、GitHub 链接。
- 配置文件结构总体符合设计(
settings/games/version)。 - 支持用户目录与 Steam 存档路径模板。
- 启动后可获取 Steam UID 并供前端选择。
- 支持备份备注、备注文件、备份列表、备注编辑、删除二次确认。
- UI 拆分为主界面/配置界面/软件信息界面。
- 备份压缩格式:
- 设计为
.7z - 当前实现为
.zip(列表读取兼容.7z,但复原仅支持.zip)
- 设计为
- 复原模块:
- 设计文档中“现阶段先不做”
- 当前已实现
zip复原闭环
- 复原
.7z支持(当前仅.zip可复原)。
lastSave目前在“备份成功”和“复原成功”都会更新。语义上若定义为“上次备份时间”,则复原后更新会造成显示偏差。- 备份列表会显示
.7z,但点击复原会失败(当前复原仅支持.zip)。 - 当前
tauri.conf.json中app.security.csp为null,生产安全基线偏弱。
- 统一压缩策略:
- 方案 A:全面切换到
.7z(并补齐复原) - 方案 B:明确以
.zip为主,文档与 UI 文案同步
- 方案 A:全面切换到
- 统一时间语义:区分“上次备份时间”与“上次复原时间”。
- 增加关键流程测试:路径解析、备份/删除/复原、配置迁移。
当前需求要求允许用户自定义任意图片来源,可使用“尽量收敛但放开 img-src”的策略。
src-tauri/tauri.conf.json 推荐示例(生产):
{
"app": {
"security": {
"csp": {
"default-src": "'self'",
"connect-src": "'self' ipc: http://ipc.localhost",
"img-src": "* data: blob: asset: http://asset.localhost https://asset.localhost",
"style-src": "'self' 'unsafe-inline'",
"font-src": "'self' data:",
"object-src": "'none'",
"frame-src": "'none'"
},
"devCsp": {
"default-src": "'self'",
"connect-src": "'self' ipc: http://ipc.localhost ws://localhost:2333 ws://localhost:23333",
"img-src": "* data: blob: asset: http://asset.localhost https://asset.localhost",
"style-src": "'self' 'unsafe-inline'",
"font-src": "'self' data:",
"object-src": "'none'",
"frame-src": "'none'"
}
}
}
}说明:
img-src放开为*以满足“任意来源图片”需求,同时保留data:/blob:/asset:。- 其他指令维持收敛,避免把脚本来源也放开。
devCsp单独放开本地 ws/hmr,避免开发期白屏。
pnpm install
pnpm tauri:dev