安装位置,自动更新,手动更新

一:引包:electron,electron-builder,electron-updater**

npm i electron –save-dev

npm i electron-builder –save-dev

npm i electron-updater –save

注:每个包都要放在相应的位置;
Package.json配置:

1.字段:”build”
参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"publish": [
{
"provider": "generic",
"url": "http://localhost:8899/" //存放软件版本的地址
}
],
"directories": {
"output": "release", //打包后文件所在位置
"app": "./" //开始位置
},
"win": { //windows下安装软件配置参数
"target": [
"nsis", //打包为nsis安装文件
"zip" //打包为安装文件zip
]
},
"nsis": { //nsis配置参数
"oneClick": false, //可单击打开
"allowToChangeInstallationDirectory": true, //允许用户选择安装位置
"perMachine": true
}
};

2.字段:”script”
参数:

1
2
3
4

{
"dist": "electron-builder"
}

3.字段:”version”
参数:

1
1.0.0   //保存版本信息,通过该字段完成更新功能(必须字段)

二:打包:npm run dist

等待打包,打包完成之后生成的文件会放在output字段设置的位置;

这是打包完成后生成的文件,其中latest.yml是electron-builder自动生成的版本管理文件, 该文件保存有版本信息;

箭头指向的文件为可安装软件,即打包后的目标文件;

版本文件:

可以看到,现在打包的版本为2.0.0,想要改变版本只要更改package.json的version字段,重新打包即可;

点击该文件可进行安装:

三:更新

确认已经安装了electron-updater

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1.需要在electron主进程中引入electron-updater;

const autoUpdater = require("electron-updater").autoUpdater; //引入 autoUpdater

2.以下代码需要在完成创建BrowserWindow后执行;

autoUpdater.setFeedURL('http://localhost:8899/'); //设置检测更新地址(参数为 软件所在位置)

3.autoUpdater.checkForUpdates() //检测是否有新版本,如果有新版本则自动下载;

4.autoUpdater.on('update-downloaded', function () {
//下载完成后执行 quitAndInstall
autoUpdater.quitAndInstall(); //关闭软件并安装新版本
});


5.安装程序后,每次打开都会执行上述代码,每次都会检测是否有新版本;
6.最后一步,打包一个新版本的软件,把exe文件和latest.yml一起放在autoUpdater.setFeedURL()设置的路径下;

打开软件后检测到有新版本时就会自动下载安装:

以上为软件自动更新,若要软件手动更新还需要electron主进程和渲染进程之间的通讯,通过用户操作触发更新检测,下载更新事件;

以下是autoUpdater手动更新时可能用到的方法和事件;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
事件列表
autoUpdater 对象会触发以下的事件:
事件:'error'
返回:
error Error
当更新发生错误的时候触发。
事件:'checking-for-update'
当开始检查更新的时候触发。
事件:'update-available'
当发现一个可用更新的时候触发,更新包下载会自动开始。
事件:'update-not-available'
当没有可用更新的时候触发。
事件:'update-downloaded'
返回:
event Event
releaseNotes String - 新版本更新公告
releaseName String - 新的版本号
releaseDate Date - 新版本发布的日期
updateURL String - 更新地址
在更新下载完成的时候触发。
在 Windows 上只有 releaseName 是有效的。
方法列表
autoUpdater 对象有以下的方法:
autoUpdater.setFeedURL(url)
url String
设置检查更新的 url,并且初始化自动更新。这个 url 一旦设置就无法更改。
autoUpdater.checkForUpdates()
向服务端查询现在是否有可用的更新。在调用这个方法之前,必须要先调用 setFeedURL。
autoUpdater.quitAndInstall()
在下载完成后,重启当前的应用并且安装更新。这个方法应该仅在 update-downloaded 事件触发后被调用。