跳到主要内容

更新机制

版本号策略​

采用四段式版本号:

主.次.修订.构建
1 . 0 . 22 . 222
段递增时机
构建(最后一段)日常修 bug、小改动 —— 默认只动这段
修订功能累积到一定量
次较大功能集
主重大变更,不轻易动

原则:尽量使用补丁版本,不发大版本。

版本号同步​

三个文件需要保持一致的前三段:

文件格式示例
src-tauri/tauri.conf.json四段式1.0.22.222
src-tauri/Cargo.toml三段式1.0.22
package.json三段式1.0.22
为什么 Cargo 只能用三段

Cargo 的 version 字段强制要求合法 semver,四段式会报错。四段式版本以 tauri.conf.json 为准,安装包实际使用这个版本。

递增版本​

# 递增构建段(默认)1.0.22.222 -> 1.0.22.223
pwsh scripts/bump-version.ps1

# 递增修订段 1.0.22.223 -> 1.0.23.0
pwsh scripts/bump-version.ps1 -Level patch

# 递增次段
pwsh scripts/bump-version.ps1 -Level minor

# 直接指定
pwsh scripts/bump-version.ps1 -Set 1.0.22.222

# 只改版本号,不创建 git 标签
pwsh scripts/bump-version.ps1 -NoTag

脚本会自动更新三个文件,并创建 v1.0.22.223 格式的 git 标签。

发布流程​

# 1. 递增版本并打标签
pwsh scripts/bump-version.ps1

# 2. 推送标签,触发云原生构建
git push origin v1.0.22.223

推送 v* 标签后,cnb.cool 流水线自动执行:

  1. prepare — 从标签提取版本号
  2. build-frontend — pnpm install + pnpm build
  3. build-windows — 同步版本到 tauri.conf.json,cargo tauri build 产出 NSIS + MSI
  4. checksum — 生成 SHA256 校验文件
  5. upload-release — 上传安装包与校验文件到仓库 Release

流水线配置见仓库根目录 .cnb.yml。

更新检查​

应用启动 30 秒后检查更新(避免拖慢启动)。

配置项:

设置默认说明
auto_check_update开启动时自动检查
silent_update关发现新版本后自动下载并静默安装
update_repo空更新源仓库,如 alaikis/sidekick-desktop

静默更新流程​

检查 Release → 版本比对 → 下载 → SHA256 校验 → 静默安装 → 退出应用

任一步骤失败只记录日志并推送事件,不弹窗、不阻塞应用使用。

安装参数​

格式交互式静默
NSIS显示安装界面/S
MSI显示安装界面/qn /norestart
安装前必须退出应用

安装程序要覆盖正在运行的可执行文件。流程末尾会调用 app.exit(0) 让出文件占用。

安全检查​

未提供校验值时拒绝静默安装。

如果 Release 没有 .sha256 资产,静默流程会中止并推送 update-needs-confirm 事件,转为提示用户确认来源,而不是静默安装一个无法验证的文件。

下载后校验不匹配会删除文件并报错:

校验失败:期望 abc123...,实际 def456...

前端事件​

更新过程通过 Tauri 事件推送,前端可监听:

事件触发时机
update-check-failed查询失败(网络异常等)
update-available发现新版本
update-needs-confirm缺少校验值,需用户确认
update-download-failed下载失败
update-progress下载进度(received / total)
update-installing开始静默安装
update-install-failed安装启动失败