跳转到内容

在线更新

框架内置在线更新:前端 src/core/updater,Rust src-tauri/src/updater.rs (命令 updater_check / updater_install / updater_restart),底层是官方 tauri-plugin-updater + 自建静态清单。

  • 发布物 = 各平台安装包 + 对应 .sig(minisign 签名)+ 静态清单 latest.json
  • 分发:把安装包与 latest.json 放到一个可匿名 HTTPS 访问的目录。
  • App 仅在启动后检查一次updateEnabled + updateAutoCheck 控制,无轮询); 设置页可配置总开关、更新服务器地址、是否自动检查;关于页显示当前版本。
  • 版本唯一事实源 = tauri.conf.json > version;更新选择是严格 semver, 远端必须 > 本地,因此版本号单调递增
终端窗口
pnpm tauri signer generate -w ~/.tauri/<app>.key # 会提示设置口令(可留空)
  • 私钥:~/.tauri/<app>.key不入库,务必备份)。
  • 公钥:~/.tauri/<app>.key.pub

编辑 src-tauri/tauri.conf.json

{
"bundle": { "createUpdaterArtifacts": true },
"plugins": {
"updater": {
"pubkey": "<~/.tauri/<app>.key.pub 的内容>"
}
}
}

无需填写 plugins.updater.endpoints——更新地址始终由设置项在运行时覆盖。

设置项默认为空时 App 不会自动检查。想开箱即用,可在设置默认值里写死你的域名, 例如 src/stores/settings.ts

const updateEnabled = ref(true);
const updateServerUrl = ref('https://<你的域名>');
  • 静态目录,能匿名 GET(无登录、无 403)。
  • 必须 HTTPS(更新器拒绝非 https)。
  • latest.json 放在你配置的地址对应路径(若地址是根域名,则请求 <域名>/latest.json)。
  • 自检:curl -s https://<域名>/latest.json 应返回 JSON(不是 403 / 500 / 登录页)。