6.3 KiB
发布新版本
增量更新采用「无感更新」:后台静默准备,就绪后仅弹一次「重启以更新」。
推荐流程:先本地测试包,再正式发版
-
打本地测试包(不改版本号、不覆盖
build\output\)- 双击
scripts\package\pack_local_test.bat,或在项目根执行:
python scripts/package/pack_local_test.py - 产物:
build\output_local\ServerManager_Setup_LOCAL.exe(安装包名为 ServerManager (本地测试),独立 AppId,可与正式版并存)。 - 可选:将根目录
version.json同步到build\output_local\(脚本已自动复制)。
- 双击
-
本地安装并验证功能
- 确认无问题后再进入发版步骤。
-
正式发版
- 推荐
scripts\package\release.bat 1.0.x(先 PyInstaller,再改版本号并同步到dist,再 Inno,最后--post-build)。 - 产物在
build\output\:ServerManager_Setup.exe、version.json等,用于上传服务器。
- 推荐
说明:
pack_local_test不会执行release.py,也不会修改version.json/build_installer.iss/src\entrypoints\tk_update_demo.py/scripts\update\tk_updater.py中的版本号。
ripgrep(rg.exe)
日志检索、匹配高亮与「文件搜索」优先使用 ripgrep。打包前请将 rg.exe 放在 resources\bin\rg.exe(可从 ripgrep Releases 下载 Windows 预编译包)。
scripts\package\build.bat 在主程序 PyInstaller 完成后会自动把 resources\bin\rg.exe 复制到 src\dist\ServerManager\rg.exe(与 ServerManager.exe 同目录);Inno Setup 随 src\dist\ServerManager\* 递归打入安装包。若未放置 rg.exe,打包会提示警告,安装后仍可通过环境变量 RG_PATH 或系统 PATH 中的 rg 使用。
一键发版(推荐)
在项目根目录执行:
scripts\package\release.bat 1.0.4
或双击 scripts\package\release.bat,按提示输入版本号(如 1.0.4)。
脚本将自动完成:PyInstaller 打包 ServerManager.exe → 更新版本号与 manifest(并同步到 src\dist\ServerManager\ 内)→ Inno Setup 打安装包 → --post-build(复制 version.json 到 build\output,并保存 dist 快照)→ 清理打包中间产物。
正式发版统一使用
build/output作为发布目录,manifest 和安装包 URL 均指向https://www.sumi.work/api/software/server-manager/...。
增量说明:默认仍可全量发版。需要减少带宽时使用文件级增量 zip,它会比较上一版 dist\ServerManager 快照和新版 dist,只打包新增/变化文件,并保留完整安装包作为回退。
手动发版(可选)
1. 修改版本号(三处)
(若使用 scripts\package\release.bat 或 python scripts/package/release.py x.y.z,请在 PyInstaller 已成功生成 src\dist\ServerManager\ 之后 执行,以便 version.json 被同步进安装包目录。)
- build_installer.iss:
#define MyAppVersion "x.y.z"改为新版本。 - src\entrypoints\tk_update_demo.py / scripts\update\tk_updater.py:
LOCAL_VERSION = "x.y.z"改为新版本。 - version.json:
version:新版本号。release_notes:本次更新说明。download_url/full_installer_url:固定为https://www.sumi.work/api/software/server-manager/update-download。- delta_updates:不使用增量时保持
{};使用文件级增量时,生成「上一版本 → 当前版本」一项,例如从 1.0.3 升到 1.0.4:"delta_updates": { "1.0.3": { "type": "file-zip", "format": "server-manager-file-delta-v1", "package_url": "https://www.sumi.work/api/software/server-manager/delta-download?from=1.0.3", "patch_url": "https://www.sumi.work/api/software/server-manager/delta-download?from=1.0.3", "sha256": "", "sizeBytes": 0 } }sha256/sizeBytes在步骤 3 生成增量包后自动填入。
2. 打包
与 scripts\package\release.bat 等价的手动顺序:
scripts\package\build.bat
python scripts/package/release.py 1.0.x --notes "说明"
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" scripts\package\build_installer.iss
python scripts/package/release.py --post-build
或仅打安装包(不执行 scripts\package\release.py)时用 scripts\package\pack_all.bat。得到 src\dist\ServerManager\、build\output\ServerManager_Setup.exe、build\output\version.json。
自动更新发布路径
客户端更新入口统一使用 build/output:
- manifest:
server_manager/build/output/version.json - 完整安装包:
server_manager/build/output/ServerManager_Setup.exe
发布时上传完整安装包、version.json,若启用增量还要上传 build/output/patches/*.smdelta.zip。客户端检测到更高版本后会优先下载当前版本对应的增量包;增量校验或应用失败时,回退到 download_url / full_installer_url 指向的完整安装包。
3. 生成文件级增量包(可选)
仅当需要「上一版本 → 当前版本」的增量更新时执行。
-
准备上一版本 dist 快照。
release.py --post-build会自动保存当前版本到:
build/output/snapshots/ServerManager-x.y.z -
生成增量 manifest 项:在 PyInstaller 成功后、Inno Setup 前执行:
python scripts/package/release.py 1.0.4 --with-delta --notes "说明" -
打安装包后生成
.smdelta.zip并填 SHA256:python scripts/package/release.py --post-build --old-dist build/output/snapshots/ServerManager-1.0.3生成产物:
build/output/patches/v1.0.3_to_v1.0.4.smdelta.zip。如果未提供--old-dist或生成失败,脚本会清空delta_updates并回退全量更新。
4. 发布内容
发布 build\output 目录即可:
build/output/ServerManager_Setup.exebuild/output/version.jsonbuild/output/patches/*.smdelta.zip(若使用增量更新)
用户通过 update_url 拉取 version.json,客户端更新服务会后台静默准备增量或全量,就绪后弹「重启以更新」。
开发计划
- 查看服务器日志:支持查看 error/info、角色协议等日志,并支持模糊搜索。