技能|版本号两处同步升版法
> 与知识库 05-技能库/技能|版本号两处同步升版法.md 一一对应(三处同步之一)。
适用场景
完成功能/数据变更后准备发版,需要把版本号统一推进并核对所有引用点。
触发词
升版本号、版本号两处、版本不一致、APP_VERSION、MyAppVersion、setup.iss 版本
操作步骤
- 定新版本号:小修
x.x.+1、加步骤/加能力x.+1.0、重构+1.0.0。 - 改第一处:
backend/main.py的APP_VERSION(约 116 行)——运行时「关于」//api/version读它。 - 改第二处:
installer/setup.iss的#define MyAppVersion(约 6 行)——决定产出的安装包文件名。 - 全仓 grep 旧版本号:
grep -rn "旧版本" --include=*.py --include=*.iss --include=*.json --include=*.html --include=*.js --include=*.md,排除dist/与临时目录,确认无遗漏。 - 改完落到发版记录:在项目实施记录文档里补一节,写明版本、变更点、验证结果。
- 冒烟时回验:打包后打
/api/version,确认返回的新版本号与第 2 步一致;安装包文件名与第 3 步一致。
注意边界
- 只改一处是最高频事故:安装包叫新版本、程序里显示旧版本(或反之),用户无法判断自己装的是哪版。
- grep 时务必排除
dist/、build/、临时目录,否则一堆历史产物干扰判断。 - 版本号不要用日期或分支名,保持纯数字三段式,便于比较大小。
- 升版应该在「纯净重导入」之后、打包之前做,避免改完又被还原覆盖。
反例避雷
| 反例 | 为什么错 | 正确做法 |
|---|---|---|
| 只改 main.py 不改 setup.iss | 安装包名还是旧版,两处不一致 | 两处同时 +1 |
| 改完不 grep | 别处硬编码的旧版本没发现 | 全仓 grep 排除 dist 后确认 0 命中 |
| 先升版后还原数据库 | 改完的代码/配置被备份覆盖 | 顺序:纯净重导入 → 升版 → 打包 |
| 冒烟不看 /api/version | 版本号错了发现不了 | 冒烟必查 health + version 两个接口 |
关联
- 总纲技能:
05-技能库/技能|安检数据导入与发版打包流程.md - 项目:
D:\安检系统(FastAPI + SQLite 按年分库 + PyInstaller/Inno Setup 桌面壳) - 文件:
backend/main.py、installer/setup.iss
版本记录
| 版本 | 日期 | 变更 |
|---|---|---|
| v1.0.0 | 2026-09-29 | 首版实战固化(V4.5.7):APP_VERSION 与 MyAppVersion 两处同步 +1,冒烟 /api/version 返回 4.5.7 一致 |