electron-updater自动更新踩坑

由于项目的更新服务很不稳定,所以想着换一个更新服务。百度一下,立马就看到了electron-updater。网上有很多关于如何使用的demo,我就跟着试了一下,发现了很多的问题,在这里做一个总结。

当然网上说过的我就不说了。。。。。。。。。。。。。。

1. 自动更新,参数名:autoDownload,文件名:AppUpdater.js
执行autoUpdate.checkForUpdate()方法后,electron-updater(以下简称eu)会开始检查版本号,然后下载服务器里面的lastest.yml文件,这个文件包含version,path,sha512/sha256三个参数。接着比较自己的版本号和version,如果相同则表示已经是最新版本,不同则会产生结果:第一种就是字符串或格式不匹配(比如你的版本号是五个数字,而服务器上的version是四个),第二种就会触发更新。默认的autoDownload=true,表示是自动下载安装包。我们需要在AppUpdater.d.ts文件中,定义一个变量,并通过autoUpdater.你的变量去访问他,并修改他的值。如图:
AppUpdater.d.ts46/47行处作如下修改
在这里插入图片描述
AppUpdater.js161/168行处,分别做如下修改:
在这里插入图片描述
对,你没有看错,应用退出时自动安装也需要做同样的处理。

2. 前面说了停止自动下载,那怎么恢复下载呢?
对,执行这个方法,就能恢复了。
在这里插入图片描述

3. 非electron-builder打包,生成sha512加密结果。
那么接下来,就是重点了,electron-builder在打包的过程中会生成latest.yml文件。但是,如果你用electron-packager就没得了,而自动更新下载下来的文件,如果不通过它的安全验证,就不能把文件转为能够安装的exe文件。那么该如何生成sha512加密结果呢?上代码!!!

  const crypto = require('crypto')
  const hash = crypto.createHash('sha512')
  hash.setEncoding('base64')
  const fs = require('fs')
  let file = '.\OneClickTerminal Setup 1.0.22.exe'
  let options = undefined
  let rs = fs.createReadStream(file, {
    ...options,
    highWaterMark: 1024 * 1024
  })
  rs.on('data', (data) => {
    hash.update(data)
  })

  rs.on('end', () => {

    hash.digest()
    hash.end()
    console.log(hash.read())
  })

这个代码需要在node环境中执行哦!至于为什么我会知道这个加密方式,就别问了,都是泪。。。/(ㄒoㄒ)/~~

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值