tauri开发笔记

自更新

tauri 的自更新实现的还是比较简单,看看文档就基本明白怎么用了。

记录一下更新一版的流程。

  1. 修改版本号

tauri.conf.json中的版本号和package.json是两个独立的配置,并不会同步。

通常只需要修改tauri.conf.json就可以。需要在前端中显示版本号时,使用 tauri api getVersion而不是VITE_APP_VERSION

  1. 编译新版本

在编译之前,记得要先在命令行中设置环境变量TAURI_PRIVATE_KEYTAURI_KEY_PASSWORD,这样才能生成应用签名。

  1. 复制安装包到文件服务器

tauri.conf.json中的tauri.updater部分,我们定义了用来检查更新的 endpoints,格式像这样https://releases.myapp.com/{{target}}/{{arch}}/{{current_version}}

这里的{{current_version}}是当前应用的版本号,{{target}}是目标平台,{{arch}}是目标架构。

假设我们当前版本是1.0.1,目标平台是windows,架构是x86_64,那么我们的更新包说明文件地址应该是https://releases.myapp.com/windows/x86_64/1.0.1

它的内容是一个 json 对象,包含了新版本的信息,例如:

1
2
3
4
5
6
7
8
9
10
11
{
"version": "1.0.1",
"notes": "添加自动更新功能",
"pub_date": "2024-03-21T09:25:57Z",
"platforms": {
"windows-x86_64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVTeWRvb2RlSElDdFlsV28vWktvM1psdlZUVUtoMUJoRTM5OSsrV0RZeTBuZk8zdFU5VlYvV2FwMU0vdmFVdHJmUThVYWhBSlFabXFXbm1tcFF0QXFPaFVJdmJwcGhPNndRPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzEwOTE5ODE4CWZpbGU6dXBsb2FkLWFzc3RfMS4wLjNfeDY0LXNldHVwLm5zaXMuemlwCk03bkRtOGV5TDJ3dmprUUc4OFFSdWdDbHZ0QWxZTE9KUmRKRkRLVUNjazV6WElsKzJsTDhoZzJ3bFhNaFJUWmlBdWJwYm5ocTBCT3pjeDB0MG9ORkR3PT0K",
"url": "https://releases.myapp.com/packages/myapp_1.0.1_x64-setup.nsis.zip"
}
}
}

它描述了当前最新版本就是1.0.1,app 在启动时,会拉取这个 json 文件,根据version来判断是否需要更新。

在我们升级时,先不要改动这个文件,先把编译好的安装包上传到https://releases.myapp.com/packages/myapp_1.0.2_x64-setup.nsis.zipmyapp_1.0.2_x64-setup.nsis.zip.sig就是signature,一会儿要用到。

  1. 添加新版本信息

加完安装包后,我们再修改1.0.1这个 json 文件,让它升级到1.0.2。基本上需要修改每一个字段。

1
2
3
4
5
6
7
8
9
10
11
{
"version": "1.0.2",
"notes": "修复了一些bug",
"pub_date": "2024-04-06T09:25:57Z",
"platforms": {
"windows-x86_64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVTeWRvb2RlSElDdGZvRlAxWi80Q0hNQ0VGblhTTjkvNHB2NFBEQkxUVHBwdUgyVjdrYThEeGcyS3VmSUQ0cU9LU3V3UnpBS1liV0YwZUtGQkdiSlpqcC90Zm1ScnBTTFFJPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzE4ODYzMTQ5CWZpbGU6dXBsb2FkLWFzc3RfMS4wLjRfeDY0LXNldHVwLm5zaXMuemlwCnBabGNQb09JdXpKekpMUDA1NEI0WVJiNTRpZU9SUmhBK29ZbmtrL3FoWUduYmhHS25xUlU3cjByemNuaUNQNlkyaDlWamg0bEJtWWhVT0hhNnZ3RkFnPT0K",
"url": "https://releases.myapp.com/packages/myapp_1.0.2_x64-setup.nsis.zip"
}
}
}

注意,这里我们还需要创建一个新文件,内容与上面的一样,取名为1.0.2。这样1.0.2版本才能拉取到属于它自己的更新说明文件。

webview 的 UDF 目录

windows 的 webview2 有 UDF 目录,用来存放 local storage、cookie 等数据。

我们可以通过 js api appLocalDataDir来获取这个目录。

通常情况下,这个目录是${$env:localappdata}\${tauri.bundle.identifier}\EBWebView

环境变量

如果发现环境变量与设置的不符,请检查是否开启了 vscode 中的Enable Persistent Sessions。vite 会以当前终端的环境变量为准,并不会使用.env 中的环境变量覆盖掉当前终端中的环境变量。

在进行编译时,最好使用系统终端,不要使用vscode自带的终端,防止环境被污染。