tauri 配置 gitee 自动更新环境
本章介绍如何使用 gitee 仓库配置 tauri 的自动更新环境。
tauri 的更新器配置是内置的,比 electron 的配置要简单的多,具体配置流程可以参考官方指南 Updater。
以下内容也会提及相关配置。
本文章使用 gitee 作为示例,在国内的速度会更好,github 的配置与 gitee 类似,感兴趣的可以自行配置。
本文项目在 window 系统中配置打包,如使用其他系统的请参考官方指南配置。
新建 gitee 仓库
要实现 tauri 的自动更新环境,需要配置一个或两个仓库。根据自己的实际需求选择,如果项目代码是私有的,就需要两个仓库,一个开源用于存放项目更新信息和版本信息。 如果项目代码是开源的,建议同样使用两个仓库。
以下将使用两个仓库进行配置。
以下新建两个仓库,一个是项目代码仓库,一个是存放项目更新信息的仓库。
代码仓库: tauri-vite-demo
更新信息仓库: tauri-update-test
生成 tauri 公钥私钥
运行以下命令生成公钥密钥:
tauri signer generate -w ~/.tauri/myapp.key
# 或者
cargo tauri signer generate -w ~/.tauri/myapp.key
输入命令后,提示输入密码,如果要输入密码,请务必记住密码,否则该密钥将无法使用,无需密钥则直接回车继续。
公钥 myapp.key.pub 内容添加到 tauri.config.json > updater > pubkey 中。
私钥和密码需要添加到环境变量中。
TAURI_PRIVATE_KEY 存在私钥的路径或者内容。
TAURI_KEY_PASSWORD 存在私钥的密码,无密码可不加。
可以在系统的环境变量中添加变量如下图所示:
或者在终端设置临时环境变量,这里使用 Powser Shell,使用其他终端请自行搜索设置方法。
$Env:TAURI_PRIVATE_KEY = "私钥内容或路径"
$Env:TAURI_PRIVATE_KEY = "私钥密码"
tauri.config.json 配置
配置 tauri.config.json 的 updater 部分内容。
"updater": {
"active": true,
"endpoints": [
"https://gitee.com/zhidal/tauri-update-test/raw/master/update.json"
],
"dialog": true,
"pubkey": "YOUR_UPDATER_SIGNATURE_PUBKEY_HERE"
}
- active: 启用更新器;
- endpoints: 端点,保存获取更新信息 json 的接口,是数组类型,可以存放多个,会依次请求更新信息;
- dialog: 默认更新弹窗,如需自己配置,设为
false; - pubkey: 公钥,填写上文中生成的公钥
myapp.key.pub的内容;
endpoints 填写更新信息的 json 接口,将 gitee 仓库中的实际路径中的 bolb 替换成 raw 即可得到 json 的内容接口。
json 接口内容请看更新信息。
如:gitee.com/zhidal/taur… 的 json 路径为 gitee.com/zhidal/taur…。
打包 tauri 项目
运行以下命令打包:
yarn tauri build
打包完成后会在项目的 src-tauri/target/release/bundle/msi 中看到打包后的文件。
分别是后缀为 *.msi *.msi.zip *.msi.zip.sig 的三个文件。
*.msi是安装包;*.msi.zip是更新时使用的包;*.msi.zip.sig是第二个包的签名文件;
发行版本
在仓库中创建发行版,如果项目仓库开源,可以在项目仓库中创建发行版本,如果是私有仓库,则在存在更新信息的仓库中发行版本,流程是一致的,但仓库要开源。
在仓库中创建发行版流程,如下图所示:
图中 *.msi.zip 文件的链接即是更新器使用到的 url,具体请看下节。
修改更新信息
在存放更新信息的仓库中,更新 json 文件, json 内容格式有两种,推荐使用 Update File JSON Format 格式。
{
"version": "v0.4.0",
"notes": "Test version",
"pub_date": "2022-08-02T15:56:57Z",
"platforms": {
"windows-x86_64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRMEt2OXpkODJQRFNZSFhXUkd6dEdSUFNRaWN3WXJzMU9adlk0RGhsSU5qclhKc25NK0toQkU5eXFiTTlLOW9uNzlsMlI4Z3UxSzYrUzM5SklFY21PUkwzTUJza1gra3c0PQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjU5NDk0ODQ4CWZpbGU6dGF1cmktdml0ZS1kZW1vXzAuNC4wX3g2NF96aC1DTi5tc2kuemlwCkh0UUdUdFBIMDRiV256RTkvWms5cDFZaFZqOUcyUUVlTkhuM2hLbUwvVlYxcmdMSTV3eTZkb0NZc1ZBOGl0Qmc3YVh1cFJiZnFWM2lSUmhieXB2UEJRPT0K",
"url": "https://gitee.com/zhidal/tauri-vite-demo/attach_files/1145742/download/tauri-vite-demo_0.4.0_x64_zh-CN.msi.zip"
}
}
}
- version: 版本号;
- notes: 提示信息;
- pub_date: 发布时间;
- platforms: 不同平台的更新包信息, key 用来区分不同平台, 具体格式参考官方指南;
- signature: 是安装包文件的签名信息, 即是打包生成的
*.msi.zip.sig后缀的文件内容; - url: 是安装包文件的下载路径,即在仓库中发行版本后的
*.msi.zip文件的链接;
测试更新
修改项目的 tauri.config.json 文件的 version 版本号(大于当前版本号)。
然后重复以下步骤:
安装旧版本程序,打开运行,查看是否提示安装新版本。
或者把项目中的 version 改回旧版本, 运行开发命令 yarn tauri dev,查看是否提示安装新版本。
如果没有提示信息,可以参考官方指南,添加监听和手动发起更新检测和安装。
根据提示信息,修复问题。