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

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

创建一个项目

pnpm create tauri-app

根据配置选择就可以

pnpm tauri dev

启动项目

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

"bundle": {"active": true,"targets": "all","identifier": "com.tauri.build" //改成build
}

生成更新秘钥

pnpm tauri signer generate -w ~/.tauri/myapp.key

配置到本地的环境变量中

主要配置这两个

TAURI_KEY_PASSWORD //生成时输入的密码
TAURI_PRIVATE_KEY //私钥

可以使用

echo $TAURI_KEY_PASSWORD和echo $TAURI_PRIVATE_KEY

查看是否生效

设置公钥

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

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

{"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更新信息配置

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

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

写一个更新的脚本

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

//updateVersion.jsimport 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));

更新完开始打包

pnpm tauri build

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

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));

执行脚本

"pub": "cd build && node ./updateVersion.js && pnpm tauri build && node ./publish.js"

打包更新版本、发布

pnpm pub

发布版本到git或者服务器

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

测试更新

更新成功

应用地址

微芒计划

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

概率论基础概念

随机试验 随机试验(Random Experiment)是在相同条件下对某随机现象进行的大量重复观测。这种试验具有以下特点: 在试验前不能断定其将发生什么结果,但可明确指出或说明试验的全部可能结果是什么。 在相同的条件下试验可大量地重…

XR虚拟拍摄:短剧制作的新宠

XR虚拟拍摄:短剧制作的新宠 随着数字技术的快速发展,短剧拍摄领域正在经历一场革命性的变革。XR(扩展现实)技术的兴起,为短剧制作带来了前所未有的机遇与挑战。近年来,越来越多的短剧制作团队开始采用XR虚拟…

谷粒商城——Redisson看门狗

可重入锁: 看门狗机制:(lock.lock()不设置过期时间就会自动触发 看门狗机制) 如果一个线程已经上锁后,在运行的过程中中断导致未释放锁从而导致其他线程无法进行,为此需要为每个锁设置自动过期时间。但是如果线程运行时间较长&am…

Learn OpenGL 25 法线贴图

为什么要引入法线贴图 我们的场景中已经充满了多边形物体,其中每个都可能由成百上千平坦的三角形组成。我们以向三角形上附加纹理的方式来增加额外细节,提升真实感,隐藏多边形几何体是由无数三角形组成的事实。纹理确有助益,然而…

Linux进程地址空间详解

文章目录 前言一、程序地址空间二、感受虚拟地址的存在三、进程地址空间四、程序从磁盘加载到内存的过程4.1 物理地址和虚拟地址的区别 五、写时拷贝5.1 解释fork()函数有两个返回值 前言 我们在学习C/C的时候用到的地址是什么地址呢?虚拟地址?物理地址&…

【无人机综合考试题】

1.请选择出哪一个功能选项,在手动遥控飞行时,可以改变各通道的操作灵敏度? 行程比例在手动遥控飞行时,可以改变各通道的操作灵敏度 用于起降的遥控器中 THR、ELE 通道分别控制多旋翼无人机的什么运动? AIL(左、右移动)RUD(左、右水平旋转…

Java基础【上】韩顺平(反射、类加载、final接口、抽象类、内部类)

涵盖知识点:反射、类加载、单例模式、final、抽象类、接口、内部类(局部内部类、匿名内部类、成员内部类、静态内部类) P711 反射机制原理 创建如下目录结构,在模块下创建src文件夹,文件夹要设置为Sources文件夹&…

红桃写作方便吗 #学习方法#微信#微信

红桃写作是一个非常好用的论文写作工具,它不仅方便快捷,而且非常靠谱,能够帮助用户轻松完成论文写作任务。不论是学生还是专业人士,都可以通过红桃写作轻松地完成论文的写作工作,大大提高工作效率。 首先,红…

多人协作的思考

有时候可能会有多人协作的需求,多人协作有很多实现方式 可以多人改,但是同时只有一人能改。这种不算纯粹的多人协作,偏权限控制。 飞书文档类的多人协作,大家都在同一个数据载体上修改。 git式的多人协作,没人都有一…

flutter->Scaffold左侧/右侧侧边栏和UserAccountsDrawerHeader的使用

//appBar的 leading/actions 和 Scaffold的drawer/endDrawer 冲突只能存在一个 import package:flutter/material.dart;void main() {runApp(MyApp()); }class MyApp extends StatelessWidget {const MyApp({super.key});overrideWidget build(BuildContext context) {retur…

【docker常用命令】

1. 什么是docker Docker 是一种开源的容器化平台,用于开发、交付和运行应用程序。它允许开发人员将应用程序及其依赖项(如库、环境变量、配置文件等)打包到一个被称为容器的标准化单元中。这个容器包含了一切应用程序需要运行的所有内容&…

Python编程—Ajax数据爬取

Python编程—Ajax数据爬取 ​ 在浏览器中可以看到正常显示的页面数据,而使用requests得到的结果中并没有这些数据。这是因为requests获取的都是原始HTML文档,而浏览器中的页面是JavaScript处理数据后生成的结果,这些数据有多种来源&#xff…

使用 Suno 创作歌曲

Suno 是一款基于人工智能的音乐创作工具,可以帮助您轻松创作原创歌曲。 它可以根据您的歌词生成旋律、和弦和伴奏,并提供多种风格和情绪供您选择。 在本文中,我们将介绍如何使用 Suno 创作歌曲。 我们将使用以下步骤: 选择客制化…

蓝桥杯每日一题:扫雷

题目来源:第十三届蓝桥杯软件赛省赛 B组 在一个 n n n 行 m m m 列 的方格图中有些位置有地雷, 另外一些位置为空 请为每个空位置标一个整数, 表示周围八个相邻的方格中有多少个地雷 输入 : 输入的第一行包含两个整数 n n n , m m m 第 2 行 到 第 n 1 n 1 n…

windows 系统下(nacos1.x) nacos-1.1.3 链接数据库 mysql8.0 出错分析

** windows 系统下(nacos1.x) nacos-1.1.3 链接数据库 mysql8.0 出错分析 ** 1、首先以下方法亲测无效: 1)需要在数据库 URL 链接配置信息中 添加 allowPublicKeyRetrievaltrue 无效 db.url.0**&allowPublicKeyRetrievalt…

算法-最短路径

图的最短路径问题是一个经典的计算机科学和运筹学问题,旨在找到图中两个顶点之间的最短路径。这种问题在多种场景中都有应用,如网络路由、地图导航等。 解决图的最短路径问题有多种算法,其中最著名的包括: 1.迪杰斯特拉算法 (1).…

NIO详解

前期处理 对应的思维导图地址: https://www.processon.com/view/link/62247e810e3e74108ca1b5d7 对应的 Github地址: https://github.com/yuejianli/NIO 依赖 全局 pom.xml 依赖 <dependencies><dependency\><groupId\>junit</groupId\><artif…

AWTK T9 输入法实现原理

1. T9 输入法的中文字典数据 网上可以找到 T9 输入法的中文字典数据&#xff0c;但是通常有两个问题&#xff1a; 采用 GPL 协议&#xff0c;不太适合加入 AWTK。 只支持单个汉字的输入&#xff0c;不支持词组的输入。 经过考虑之后&#xff0c;决定自己生成 T9 输入法的中…

Mamba复现与代码解读

文章目录 环境配置demo推理源码解析参数解读Mamba块&#xff08;Mamba Block&#xff09;状态空间模型(SSM)选择性扫描算法&#xff08;selective_scan&#xff09;前向传播&#xff08;forward&#xff09; 均方根归一化 &#xff08;RMSNorm&#xff09;残差块&#xff08;Re…

集成学习 | 集成学习思想:Boosting

目录 一. Boosting思想1. Adaboost 算法1.1 Adaboost算法构建流程1.2 sklearn库参数说明 2. Gradient Boosting 算法2.1 Gradient Boosting算法构建流程2.2 Gradient Boosting算法的回归与分类问题2.2.1 Gradient Boosting回归算法均方差损失函数绝对误差损失函数 2.2.2 Gradie…