electron-updater 自动更新

  • 首先,我用的是electron-builder,不清楚packager是否适用😂

封装(其实整个丢到在app.on(‘ready’)也是可以的,autoUpdater.checkForUpdates() 必须在ready后调用)

const { autoUpdater } = require('electron-updater')
const { ipcMain } = require('electron')

function updater (event) {
  autoUpdater.setFeedURL('安装包所在线上路径')
  // 下面是自动更新的整个生命周期所发生的事件
  autoUpdater.on('error', function(message) {
    sendUpdateMessage('error', JSON.stringify(message))
  })
  // 获取版本信息
  autoUpdater.on('checking-for-update', function(message) {
    sendUpdateMessage('checking-for-update', message)
  })
  // 即将进行更新
  autoUpdater.on('update-available', function(message) {
    sendUpdateMessage('update-available', message)
  })
  // 已是最新版
  autoUpdater.on('update-not-available', function(message) {
    sendUpdateMessage('update-not-available', message)
  })

  // 更新下载进度事件 progressObj.data.percent === 100  下载完成,
  // mac端会进行安装
  // win端不会自动安装而是走到 update-downloaded
  autoUpdater.on('download-progress', function(progressObj) {
    sendUpdateMessage('downloadProgress', progressObj)
  })
  // 更新下载完成事件
  autoUpdater.on('update-downloaded', function(event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
  	// 用于通知渲染进程下载完成(不通知直接关闭更新也可以,用户体验不好而已)
    sendUpdateMessage('isUpdateNow')
    // 渲染进程返回关闭应用并更新
    ipcMain.on('updateNow', (e, arg) => {
   	  // 关闭并更新
   	  // mac端应该是更新好了,重启就是新版
   	  // win端会开启安装界面
      autoUpdater.quitAndInstall()
    })
  })
  // 检测是否有更新
  autoUpdater.checkForUpdates()

  function sendUpdateMessage (message, data) {
    console.log(message, data)
    event.sender.send('updateApp', {message, data})
  }
}

module.exports = updater

为了本地调试时加入自动更新配置文件,放在项目根路径

  • mac dev-app-update.yml
  • win default-app-update.yml
  provider: generic
  url: '安装包所在线上路径'

主进程main.js

// 自定义事件,对应渲染进程 '更新'功能
ipcMain.on('updateApp', (event) => {
  // 刚刚封装的方法
  updater(event)
})

打包后需要放到服务器的文件

  • mac 需要打包dmg和zip,并且将打包出来的.yml文件改名为latest-mac.yml(包含版本信息,新包的路径信息),将dmg、zip、latest-mac.yml放在同一根目录(线上服务器,对应配置文件的url)
  • win 需要将打包出来的 .yml文件改名为latest.yml,将exe、blockmap、latest.yml放在同一根目录(线上服务器,对应配置文件的url)

可以通过改本地配置文件的版本号本地运行进行测试

注意

  • mac 需要签名后才能使用该功能,如果签名不正确mac会提示非法签名且无法安装应用
  • win 大概也需要签名,在没签名的情况下也能用,但是存在个别用户的电脑需要以管理员打开才能够正常运行
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值