docs: default export dir to <install root>\合并后的图片

Default output moves from ~/.cmbot/output (buried in the user profile) to a
合并后的图片\ folder next to Launcher.exe — easy to find and not replaced on
update (NOT under app\, which is swapped each update). Falls back to
~/.cmbot/output if the install root is read-only; user can still pick any dir.
docs/10 §4/§5, docs/02 config, docs/07 §7.5; tasks 17.22.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 14:26:04 +08:00
co-authored by Claude Opus 4.8
parent 0795e270b4
commit 3c4617a27b
4 changed files with 26 additions and 4 deletions
+1
View File
@@ -339,6 +339,7 @@ CMBot/
说明:
- `output_dir`:用户选择的导出目录。为空时使用默认导出目录——打包态为安装根下的 `合并后的图片\`(就在程序旁、好找、不随更新替换,不可写时回退用户数据目录的 `output\`),详见 `docs/10-lan-update.md` 第 4、5 节。
- `last_garment_dir` / `last_print_dir`:上次打开的衣服 / 印花文件夹路径,用于让文件夹对话框定位到上次位置。
- `last_template`:上次选中的模板名称,用于启动恢复。
- `last_batch_mode`:上次选择的批量模式(取 `BatchMode` 枚举值,如 `full_combo` / `many_garments` / `many_prints` / `one_to_one`)。
+1 -1
View File
@@ -306,7 +306,7 @@ Shift 锁比例
要求:
- 输出目录显示完整或省略路径。
- 输出目录显示完整或省略路径;默认指向程序旁的 `合并后的图片\`(便于找到结果,详见 `docs/10` 第 4 节),用户可浏览改为任意目录。
- 格式至少支持 PNG 和 JPG。
- PNG 默认保留透明相关能力;JPG 需要处理背景。
- 质量设置用于 JPG 或需要压缩的输出格式。
+6 -3
View File
@@ -67,13 +67,14 @@
config\ # 出厂默认配置/模板,首次运行播种到 ~/.cmbot(见第 5 节)
app.old\ # 上一个可用版本,仅用于回滚,可不存在
staging\ # 下载/解压临时区,安装成功后清理
合并后的图片\ # 默认导出目录(就在程序旁、好找、不随更新替换;可在导出面板改)
%USERPROFILE%\.cmbot\ # 用户数据,独立于程序位置,始终可写、按用户隔离
config\
app_config.json # 用户偏好(输出格式、最近文件夹、最近模板、更新源等)
templates.json # 用户自定义模板
logs\
output\
output\ # 默认导出目录的回退位置(安装根不可写时)
```
说明:
@@ -84,7 +85,8 @@
- `app\config\`:出厂默认配置/模板,仅作首次运行的播种来源,运行时不读写。
- `app.old\`:上一个可用程序目录。更新失败或新版启动异常时,可把它改回 `app\` 完成回滚。
- `staging\`:下载的 zip 与解压临时目录。校验通过后,`staging\app.new\` 才会切换为 `app\`。
- `~/.cmbot\`:所有用户可写数据集中存放,**与程序位置、版本切换均无关**。即便 `app\` 所在目录只读(更新失败),配置/模板/导出仍可正常写。
- `合并后的图片\`:**默认导出目录**,放在安装根(`Launcher.exe` 旁),便于用户直接找到合成结果,且不随 `app\` 更新替换。用户可在导出面板改成任意目录;安装根不可写时回退 `~/.cmbot/output`。
- `~/.cmbot\`:配置/模板/日志集中存放,**与程序位置、版本切换均无关**。即便 `app\` 所在目录只读(更新失败),配置/模板仍可正常写。
- 安装根(含 `app\`、`app.old\`、`staging\`、`Launcher.exe`)需免提权可写**才能自更新**;不可写时仅「更新失败」,不影响数据读写。
## 5. 数据目录分离(实现前置改造)
@@ -98,7 +100,8 @@
- 数据根(`get_data_dir()`):用户数据所在,**与程序位置解耦**。
- 路径函数划分:
- `get_resource_path()` 指向**程序根**下的 `resources/`。
- `get_config_path()`、`get_log_dir()`、`get_output_dir()` 指向**数据根**下的对应目录。
- `get_config_path()`、`get_log_dir()` 指向**数据根**下的对应目录。
- `get_output_dir()`(默认导出目录)特例:打包态优先返回 `<安装根>\合并后的图片`(就在程序旁、好找、不随更新替换),不可写时回退数据根 `output\`;开发态用项目目录。用户在导出面板的选择(`output_dir`)仍优先。
- 数据根解析规则(`get_data_dir()`,三级回退):
1. 环境变量 `CMBOT_DATA_DIR` 非空时使用它(覆盖口,供测试或特殊部署)。
2. 打包态(`sys.frozen`)→ `~/.cmbot`(即 `%USERPROFILE%\.cmbot`)。**不依赖启动器注入环境变量**:即使用户绕过 `Launcher.exe` 直接双击 `app\CMBot.exe`,数据也落在 `~/.cmbot`。