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

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'] : 0
    const 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 = sha512Base64
        obj.files[0].size = size
        obj.path = 'abc.zip'
        obj.sha512 = sha512Base64
      }

      const newYamlData = yaml.dump(obj)
      fs.writeFileSync(ymlRelativePath, newYamlData, 'utf8')
    }
  }
}

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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
electron-builder使用yml文件来配置打包过程。在安装electron-builder后,你可以使用以下步骤来使用yml配置文件: 1. 在项目根目录下创建一个名为`electron-builder.yml`或者`electron-builder.yaml`的yml配置文件。 2. 在yml文件中,你可以使用不同的配置选项,比如`appId`、`productName`、`directories`等来自定义你的打包过程。你可以参考electron-builder的官方文档来获得更多的配置选项。 3. 配置文件的示例代码如下: ```yaml appId: com.example.myapp productName: My App directories: output: dist mac: target: dmg category: public.app-category.developer-tools icon: build/icon.icns ``` 4. 根据你的需求,适当修改配置文件中的选项。 5. 执行打包命令时,electron-builder会自动读取并使用你的yml配置文件来进行打包。例如,运行`electron-builder`命令来打包你的Electron应用。 需要注意的是,yml文件的语法非常严格,所以请确保你的yml配置文件的格式正确无误。希望这可以帮助到你。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [使用 electron-builder 打包 Electron 程序](https://blog.csdn.net/qq_37718797/article/details/122596524)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Vue+Electron项目学习(一)(electron-builder + electron-updater + electron-log)](https://blog.csdn.net/liujian_01/article/details/126724014)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值