From c4d2431cb0a6bf63fe46888ed88eeff226de3ec5 Mon Sep 17 00:00:00 2001 From: Jeff <632006142@qq.com> Date: Thu, 21 May 2026 20:21:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0md=E6=96=87=E4=BB=B6=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e270060..8808a03 100644 --- a/README.md +++ b/README.md @@ -201,14 +201,23 @@ gitver pyinstaller= [repodir=] [-test] [params=" ``` -版本号照常从 Git tag 计算并输出,但 PyInstaller 本身不接受 `--windows-product-version` 等命令行参数。如需将版本信息嵌入 EXE,建议在 `.spec` 文件中通过 `version=` 字段或外部 version resource 文件实现。 +版本号照常从 Git tag 计算并输出。在 **spec 模式**下,gitver 会在调用 PyInstaller 前自动将版本号写入版本信息,具体行为取决于 spec 文件中 `version=` 字段的值: + +| spec 中 `version=` 的值 | 行为 | +|---|---| +| `'version_info.txt'`(引号路径,文件存在) | 就地更新外部版本信息文件 | +| `'1.2.3.4'`(引号字符串,非有效文件路径) | 替换 spec 内该引号字符串为新版本号 | +| `version_info`(无引号标识符,spec 内定义的 VSVersionInfo 对象) | 就地更新 spec 文件内的版本字段 | +| 无 `version=` / `version=None` | 在 spec 目录生成 `version_info.txt` 并自动注入 `version='version_info.txt'` | + +在 **脚本模式**(`.py` 入口)下,PyInstaller 不接受命令行版本参数,版本号仅输出到控制台,不嵌入 EXE。 **两种打包模式:** | 模式 | 参数示例 | 说明 | |---|---|---| | 脚本模式 | `params="main.py"` | 由 PyInstaller 自动生成 spec 并打包 | -| spec 模式 | `params="myapp.spec"` | 使用已有 spec 文件,打包配置完全由 spec 控制,`params=` 仅适用于路径类运行时选项(`--distpath` 等) | +| spec 模式 | `params="myapp.spec"` | 使用已有 spec 文件,打包配置完全由 spec 控制;gitver 在调用 PyInstaller 前**自动将版本号写入版本信息**(见下表) | **示例:** @@ -452,7 +461,7 @@ VSVersionInfo( ) ``` -> `version_info.txt` 中的版本号需与实际构建版本保持一致。如需自动同步,可在构建脚本中先调用 `gitver setver=` 获取版本,再用脚本替换 `version_info.txt` 中的版本字段,然后执行 `gitver pyinstaller= params="myapp.spec"`。 +> 在 spec 模式下,gitver 会在调用 PyInstaller 前自动将计算出的版本号写入版本信息,无需手动维护 `version_info.txt`。 --- @@ -493,6 +502,8 @@ VSVersionInfo( | 42 | `pyinstaller=` 无法根据分支名计算 bid | | 43 | `pyinstaller=` 读取 tag 失败 | | 44 | `pyinstaller=` 获取当天分支提交次数失败 | +| 45 | `pyinstaller=` 版本信息文件无法生成或更新 | +| 46 | `pyinstaller=` spec 文件无法注入或修改版本信息 | ---