electron添加releasenote
开发玩桌面应用后,每次发布热更新,用户下载完更新包后应该还有个更新说明文件,让用户知道本次更新了些什么内容。
实现过程
- 每次打包玩electron应用后,在打包得目录有个自动生成得latest.yml文件,默认得内容如下
version: 2.0.5
files:
- url: XXX-2.0.5.exe
sha512: yU00sHEpUVH1cOCBmwrwpYCkY75cXy16JG0N8wlIaa1nMykAY4frVkNMsSsPuyK/au9vmEhtqgRh2rE8EQlucQ==
size: 63323130
path: XXX诊-2.0.5.exe
sha512: yU00sHEpUVH1cOCBmwrwpYCkY75cXy16JG0N8wlIaa1nMykAY4frVkNMsSsPuyK/au9vmEhtqgRh2rE8EQlucQ==
releaseDate: '2020-11-20T06:35:36.709Z'
- 以上是yml语法,在yml文件中添加一个字段,releaseNotes,该字段是个数组,可以存放你的更新说明内容。加上后如下:
version: 2.0.5
files:
- url: XXX-2.0.5.exe
sha512: yU00sHEpUVH1cOCBmwrwpYCkY75cXy16JG0N8wlIaa1nMykAY4frVkNMsSsPuyK/au9vmEhtqgRh2rE8EQlucQ==
size: 63323130
path: XXX诊-2.0.5.exe
sha512: yU00sHEpUVH1cOCBmwrwpYCkY75cXy16JG0N8wlIaa1nMykAY4frVkNMsSsPuyK/au9vmEhtqgRh2rE8EQlucQ==
releaseDate: '2020-11-20T06:35:36.709Z'
releaseNotes:
- 更新111
- 更新2222
- 在electron应用得主进程读取更新内容,一定要在update-downloaded事件中监听,因为只有下载完成后才能获取到
//下载完毕
autoUpdater.on('update-downloaded', function (releaseInfo) {
log.info("更新包说明:",JSON.stringify(releaseInfo));
//退出并进行安装(这里可以做成让用户确认后再调用)
win.webContents.send('downloaded', returnData.downloaded,releaseInfo)
});
- 第3步中得到得releaseInfo,通过自定义事件downloaded传到渲染进程,渲染进程监听downloaded事件
ipcRenderer.on("downloaded", (event, data,releaseInfo) => {
console.log("releaseInfo:",releaseInfo.releaseNotes)
let releaseNotes = releaseInfo.releaseNotes
let releaseContent = ''
if (releaseNotes.length > 0) {
releaseNotes.forEach(releaseNote => {
releaseContent += `<li>` + releaseNote + `</li>`
});
} else {
releaseContent = `<li>暂无更新说明</li>`
}
this.$Modal.confirm({
title: data.msg,
content: `<h4>更新内容</h4> ` + releaseContent + `<br><h4>温馨提示</h4><br><p>点击确定立刻升级,取消则下次打开软件时升级</p>`,
okText: '确定',
cancelText: '取消',
loading: true,
onOk: () => {
ipcRenderer.send("confirm-update");
this.$Modal.remove();
}
});
});