tauri应用实现一键快速更新版本

tauri应用实现一键快速更新版本

创建一个项目

js 复制代码
pnpm create tauri-app

根据配置选择就可以

js 复制代码
pnpm tauri dev

启动项目

##更新配置 打包配置在src-tauri/tauri.conf.json 修改打包命令

js 复制代码
"bundle": {
      "active": true,
      "targets": "all",
      "identifier": "com.tauri.build" //改成build
}

生成更新秘钥

js 复制代码
pnpm tauri signer generate -w ~/.tauri/myapp.key

配置到本地的环境变量中

主要配置这两个

shell 复制代码
TAURI_KEY_PASSWORD //生成时输入的密码
TAURI_PRIVATE_KEY //私钥

可以使用

js 复制代码
echo $TAURI_KEY_PASSWORD和echo $TAURI_PRIVATE_KEY

查看是否生效

设置公钥

将.pub后缀的文件内容复制到pubkey字段(公钥)

这个是另外的一个公开可以访问的update.json

js 复制代码
{
  "version": "1.0.7",
  "notes": "kestrel-task",
  "pub_date": "2024-03-23T03:23:09.995Z",
  "platforms": {
    "windows-x86_64": {
      "signature": "打包时的zip.sig 里面的内容",
      "url": "https://kestrel-task.cn/kestrel-task_1.0.7_x64_zh-CN.msi.zip"
    }
  }
}

uodate.json更新信息配置

js 复制代码
    "updater": {
      "active": true,
      "endpoints": [
        "https://kestrel-task.cn/update.json"
      ],
      "dialog": false,
      "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDcyRjlGRUM5N0UxNDRDNzkKUldSNVRCUit5Zjc1Y2pxMk1tRG5uK0pMc3IyclFNL3lsYWw2OUtNc2lPbjB3UUZGNjIyamRsVzQK"
    },

endpoints 可以上传到公开的git仓库里面去。

写一个更新的脚本

更新我们的版本号。主要更新 src-tauri/tauri.conf.json这个里面的version版本号。实现根据前面的版本号,增加。并且打包。

js 复制代码
//updateVersion.js

import fs from 'fs' // 读取 tauri.conf.json
const tauriConf = JSON.parse(fs.readFileSync('../src-tauri/tauri.conf.json', 'utf8'));
let version = tauriConf.package.version; //更新的版本号

//更新版本号
let versionParts = version.split('.').map(Number);
versionParts[2] += 1;
let newVersion = version;

// 更新 tauri.conf.json version
tauriConf.package.version = newVersion;
fs.writeFileSync('../src-tauri/tauri.conf.json', JSON.stringify(tauriConf, null, 2));

更新完开始打包

shell 复制代码
pnpm tauri build

自动修改发布信息,更新公钥版本信息

js 复制代码
import fs from 'fs'
// 读取 tauri.conf.json
const tauriConf = JSON.parse(fs.readFileSync('../src-tauri/tauri.conf.json', 'utf8'));
let newVersion = tauriConf.package.version; //更新的版本号

// 读取 update.json
let updateJson = JSON.parse(fs.readFileSync('update.json', 'utf8'));
// 更新 update.json version
updateJson.version = newVersion;

//获取版本更新的内容
//签名、版本路径、发版日期
const signature =  fs.readFileSync(`../src-tauri/target/release/bundle/msi/kestrel-task_${newVersion}_x64_zh-CN.msi.zip.sig`, 'utf8');
updateJson.platforms['windows-x86_64'].signature = signature;
updateJson.platforms['windows-x86_64'].url = `https://kestrel-task.cn/kestrel-task_${newVersion}_x64_zh-CN.msi.zip`
updateJson.pub_date = new Date();
fs.writeFileSync('update.json', JSON.stringify(updateJson, null, 2));

执行脚本

shell 复制代码
"pub": "cd build && node ./updateVersion.js && pnpm tauri build && node ./publish.js"

打包更新版本、发布

shell 复制代码
pnpm pub

发布版本到git或者服务器

我的是发布到服务器。 上传update.json 到服务器。及安装包。

测试更新

更新成功

应用地址

微芒计划

相关推荐
老猿讲编程1 小时前
【Eclipse OpenSOVD学习之五】拓扑引擎(Topology)
学习·rust·eclipse·sovd
object not found1 小时前
Nuxt4去掉body中默认的边距
开发语言·后端·rust
梦醒沉醉17 小时前
4、Rust参考手册——Crate和源文件
rust
chainbees17 小时前
Windows 系统 Rust 运行环境搭建
rust
k4m7v2pz20 小时前
从 Python 搬到 Rust:pyglet MIDI DAW 变成 egui 鬼畜采样器的迁移复盘
开发语言·python·rust
小灰灰搞电子21 小时前
Rust+Slint 实现ModbusRTU从机调试助手源码分享
开发语言·rust·modbusrtu
猫不易1 天前
Webpack 与 Vite:从 Loader / Plugin 到 Rolldown 统一引擎
前端·vite
Source.Liu1 天前
Tauri 2.0 + Alpine.js 起步笔记(零构建方案)
rust
小灰灰搞电子1 天前
Rust+Slint 实现抽屉式侧边栏源码分享
开发语言·rust·侧边栏