在 Tauri 中实现应用更新,可以借助官方 tauri-plugin-updater 插件完成,它已经封装了检查、下载、安装和重启的全流程。这个流程完全在应用的后台运行,用户看到的是一个简洁的更新提示,而不是手动下载安装包。
1. 检查更新
应用启动后(或定时触发),会向一个你配置的更新服务器发送一个 HTTP 请求,获取当前最新版本的元信息。这个请求会携带当前版本号和平台标识,服务端返回 JSON 数据,包含最新版本号、更新说明和下载地址等信息。例如:
{
"version": "1.2.0",
"notes": "修复了若干已知问题,提升稳定性",
"pub_date": "2025-03-21T12:00:00Z",
"platforms": {
"windows-x86_64": {
"signature": "dW50...",
"url": "https://releases.example.com/1.2.0/msi/x86_64"
}
}
}
Tauri 会比对本地版本和远端版本(按照语义化版本规则),如果远端版本更高,就触发更新流程;否则什么都不做,用户完全无感。
2. 下载更新
确定需要更新后,插件会自动在后台下载对应的安装包(.msi 或 .nsis 等)。下载过程会显示进度条(如果你在界面上做了相应的监听),并且会校验文件的数字签名(通过 signature 字段),确保安装包未被篡改。下载的文件会存放在系统的临时目录中。
3. 安装更新
下载完成后,插件会直接调用系统原生的安装程序执行“静默安装”。对于 Windows,如果是 .msi 包,会使用 msiexec 命令在后台升级;如果是 NSIS 打包的程序,插件会启动 NSIS 的静默安装参数。整个过程应用仍然处于运行状态,用户不会被强制打断,安装程序会覆盖旧的文件并更新注册表等。
4. 重启应用
安装成功后,插件会通知应用“准备就绪,可以重启以完成更新”。你可以选择立即重启,或提示用户保存当前工作后手动重启。重启逻辑也很简单:插件会启动新版本的可执行文件,然后结束当前进程。Tauri 提供了 restart 命令来实现这个操作,它会自动处理好进程间交接。
关键要点:
- 更新服务器可以按着插件要求的格式自行搭建,也可以使用 GitHub Releases 自动生成兼容的更新清单。
- 签名验证是强制性的,确保只有你签发的包才能被安装。
- 静默安装不需要管理员权限(如果安装路径在用户目录下),但
.msi安装时可能需要提权,这些都可以通过打包配置事先设定好。