博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
electron 利用 electron-builder实现自动更新
阅读量:6405 次
发布时间:2019-06-23

本文共 2544 字,大约阅读时间需要 8 分钟。

hot3.png

这篇文章是对应用文档的补充,这边刚开始用electron-forge 但没有相关的教程,放弃。

1、先学会用electron-builder进行打包。

2、然后在package.json里面添加build内容

{  "name": "ds",  "version": "1.0.0",  "description": "A minimal Electron application",  "main": "src/main.js",  "scripts": {    "dist": "electron-builder -wm",    "start": "electron ."  },    "build": {    "appId": "com.dingshang.app",    "publish": [      {        "provider": "generic",        "url": "http://www.xxx.com/static/dist/"      }    ],    "win": {      "target": [        "nsis",        "zip"      ],      "icon": "src/icon.png"    }  },  "dependencies": {    "electron-updater": "^2.21.4"  }}

3、在main.js中进行加入这个 网上的教程是import 但会提示报错。

const autoUpdater = require('electron-updater').autoUpdaterconst ipcMain = require('electron').ipcMainconst uploadUrl='http://www.d-shang.com/static/dist/'// 检测更新,在你想要检查更新的时候执行,renderer事件触发后的操作自行编写function updateHandle() {  let message = {    error: '检查更新出错',    checking: '正在检查更新……',    updateAva: '检测到新版本,正在下载……',    updateNotAva: '现在使用的就是最新版本,不用更新',  };  const os = require('os');  autoUpdater.setFeedURL(uploadUrl);  autoUpdater.on('error', function (error) {    console.log(error);    sendUpdateMessage(message.error)  });  autoUpdater.on('checking-for-update', function () {    console.log(message);    sendUpdateMessage(message.checking)  });  autoUpdater.on('update-available', function (info) {    console.log(message);    sendUpdateMessage(message.updateAva)  });  autoUpdater.on('update-not-available', function (info) {    sendUpdateMessage(message.updateNotAva)  });  // 更新下载进度事件  autoUpdater.on('download-progress', function (progressObj) {    mainWindow.webContents.send('downloadProgress', progressObj)  })  autoUpdater.on('update-downloaded', function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {    ipcMain.on('isUpdateNow', (e, arg) => {      console.log(arguments);      console.log("开始更新");      //some code here to handle event      autoUpdater.quitAndInstall();    });    mainWindow.webContents.send('isUpdateNow')  });  ipcMain.on("checkForUpdate",()=>{      //执行自动更新检查      autoUpdater.checkForUpdates();  })}// 通过main进程发送事件给renderer进程,提示更新信息function sendUpdateMessage(text) {  mainWindow.webContents.send('message', text)}

 

4、还需要在main.js的createWindow()中调用方法

function createWindow () { //这个方法要调用  updateHandle();}

 

5、设置监听 index.html

            
Hello World!

Hello World!

自动更新

 

至此,全部完成了,调试下npm start 看看行不行

 

引用文档

https://segmentfault.com/a/1190000012904543

转载于:https://my.oschina.net/u/554046/blog/1796217

你可能感兴趣的文章
屏蔽可忽略的js脚本错误
查看>>
散文分享
查看>>
【Vue】vue.js常用指令
查看>>
NFS学习
查看>>
MySql常用命令总结
查看>>
又一年...
查看>>
文件上传框的美化+预览+ajax
查看>>
Linux VFS
查看>>
ext不能选中复制属性_如何实现Extjs的grid单元格只让选择(即可以复制单元格内容)但是不让修改?...
查看>>
python中print的作用*8、不能+8_在 Python 3.x 中语句 print(*[1,2,3]) 不能正确执行。 (1.0分)_学小易找答案...
查看>>
python 生成html代码_使用Python Markdown 生成 html
查看>>
axure如何导出原件_Axure 教程:轻松导出图标字体所有图标
查看>>
laravel input值必须不等于0_框架不提供,动手造一个:Laravel表单验证自定义用法...
查看>>
cad填充图案乱理石_太快了吧!原来大神是这样用CAD图案填充的
查看>>
activator.createinstance 需要垃圾回收么_在垃圾回收器中有哪几种判断是否需要被回收的方法...
查看>>
rocketmq 消息指定_RocketMQ入坑系列(一)角色介绍及基本使用
查看>>
redis zset转set 反序列化失败_掌握好Redis的数据类型,面试心里有底了
查看>>
p图软件pⅰc_娱乐圈最塑料的夫妻,P图永远只P自己,太精彩了吧!
查看>>
jenkins 手动执行_Jenkins 入门
查看>>
怎么判断冠词用a还是an_葡语干货 | 葡萄牙语冠词用法整理大全
查看>>