<前端>Electron-builder为公证后的app打更新信息latest.yml

embedded/2024/9/24 13:08:10/

MacOS下,Electron-builder可以很方便的为测试包app打更新信息(latest-mac.yml)。
但是,正式发布的时候,不可能用测试包app,因为还没有进行公证。如何为公证的app打latest-mac.yml呢。
其实观察latest-mac.yml,其实里面就只有一些比较重要的信息:
在这里插入图片描述

1.sha512: 这个其实是打出来的zip包(如这里的abc.zip)的SHA512哈希值的Base64编码。可以通过nodejs生成出来。

// 计算文件的SHA512哈希值,以及进行Base64编码
function calculateSHA512(filePath) {return new Promise((resolve, reject) => {const hash = crypto.createHash('sha512')const stream = fs.createReadStream(filePath)stream.on('data', (data) => {hash.update(data);})stream.on('end', () => {const sha512 = hash.digest('base64');resolve(sha512);})stream.on('error', (error) => {reject(error);})})
}

2.文件大小: zip的文件大小,fs.stat获取。
3.文件名: 其实就是zip的文件名,这里一定要到时候放在服务器下面的zip名称一样。


其实,我们可以将公证后的app压缩成zip,然后获取zip的这些值。最后替换掉latest-mac.yml中的这些值。一样也能起到效果。最终使用electron-updater更新后,就是这个公证之后的包。
这里给一个参考代码:


// 改变latest-mac.yml(一开始为abc-未公证.zip打的更新信息包),为abc.zip(公证包)的信息
// 需要更改files[0].url、files[0].sha512、files[0].size和path、sha512。其余不用修改
async function changeLatestMacYml() {if (fs.existsSync(zipRelativePath) && fs.existsSync(ymlRelativePath)) {const statObj = fs.statSync(zipRelativePath)const size = ('size' in statObj) ? statObj['size'] : 0const sha512Base64 = await calculateSHA512(zipRelativePath)console.log('size: ', size)console.log('sha512Base64: ', sha512Base64)// 通过yaml更改latest-mac.yml信息为公证后的zip的信息if (size > 0 && sha512Base64.length > 0) {const oldYamlData = fs.readFileSync(ymlRelativePath, 'utf8')const obj = yaml.load(oldYamlData)if (obj) {obj.files[0].url = 'abc.zip'obj.files[0].sha512 = sha512Base64obj.files[0].size = sizeobj.path = 'abc.zip'obj.sha512 = sha512Base64}const newYamlData = yaml.dump(obj)fs.writeFileSync(ymlRelativePath, newYamlData, 'utf8')}}
}

这里用到了一个解析yml文件为Object的库:js-yaml,下载即可。


http://www.ppmy.cn/embedded/12699.html

相关文章

配置nodejs的俩小脚本

介绍:共两个脚本。 脚本1,用来配置环境变量,生成环境变量所需的配置信息,然后自己添加到系统环境变量里去 特别注意:该脚本需要放到nodejs目录下面,如果不是,则无法生成环境变量配置文本内容 另…

前端-移动端基于vant4开发

一、吸顶 头部的吸顶效果,可以使用vant4的粘性布局。 Sticky 粘性布局 - Vant 4 (gitee.io) 二、底部菜单栏样式 三、弹出层 可以使用vant4弹出层组件 Popup 弹出层 - Vant 4 (gitee.io) 四、横向标签页滚动 可以基于vant4的标签页进行开发。Tab 标签页 - Vant …

UDP文件传输工具之UDP传输的优点和缺点

在当今快节奏的网络通信时代,UDP以其独特的优势,在众多应用场景中扮演着关键角色。本文将深入探讨UDP的优缺点及其应用场景,并重点介绍镭速软件如何通过技术创新,显著提升UDP传输的效率和可靠性。 UDP传输的优点 UDP的显著优势在…

分类与预测算法评价的介绍

分类与预测算法的评价是在机器学习中至关重要的一步,它帮助我们了解模型在解决特定问题上的表现如何,并且可以帮助我们选择最适合我们需求的算法。下面是分类与预测算法评价的一般介绍: 分类与预测问题 分类问题:是指将数据分为预…

MATLAB初学者入门(14)—— 支持向量机

支持向量机(SVM)是一种强大的分类技术,用于解决分类和回归问题。它工作原理是找到最优的超平面,该超平面能够最大化不同类别数据点之间的边界。MATLAB提供了一个简单易用的工具箱,称为Statistics and Machine Learning…

Python 基础、流程、容器、函数

一、基础语法 1.1 前言 1.1.1 Python简介 Python是一门编程语言,Python的作者是Guido van Rossum(龟叔) Python优点:简单易学 Python与嵌入式、集成电路行业 强大的库和工具生态系统:Python拥有广泛而强大的库和…

【Linux】解决ubuntu20.04版本插入无线网卡没有wifi显示【无线网卡Realtek 8811cu】

ubuntu为Realtek 8811cu安装驱动,解决wifi连接问题 1、确认无线网卡的型号-Realtek 8810cu2、下载并配置驱动 一句话总结:先确定网卡的型号,然后根据网卡的型号区寻找对应的驱动下载,下载完成之后在ubuntu系统中进行编译&#xff…

css再学习

id选择器的id仅能使用一次; 可去除也可添加加粗效果; font 行高为数字n时(不添加单位)是浏览器默认font-size的n倍; 行高实现文字垂直居中(仅适应于单行文字):将line-height设置…