electron自动更新
electron可通过electron-updater实现客户端自动更新
mian.js
// 检测更新,在你想要检查更新的时候执行,renderer事件触发后的操作自行编写
function updateHandle() {
// let message = {
// error: '检查更新出错',
// checking: '正在检查更新……',
// updateAva: '检测到新版本,正在下载……',
// updateNotAva: '现在使用的就是最新版本,不用更新',
// };
const os = require('os');
autoUpdater.setFeedURL(updateUrl);
autoUpdater.on('error', function (error) {
//sendUpdateMessage(message.error)
console.log(error);
sendUpdateMessage("error", error)
});
autoUpdater.on('checking-for-update', function () {
//sendUpdateMessage(message.checking)
sendUpdateMessage("checking")
});
autoUpdater.on('update-available', function (info) {
//sendUpdateMessage(message.updateAva)
sendUpdateMessage("updateAva")
});
autoUpdater.on('update-not-available', function (info) {
sendUpdateMessage("updateNotAva")
//sendUpdateMessage(message.updateNotAva)
});
// 更新下载进度事件
autoUpdater.on('download-progress', function (progressObj) {
lodingWindow.webContents.send('downloadProgress', progressObj)
})
autoUpdater.on('update-downloaded', function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
// ipcMain.on('isUpdateNow', (e, arg)=> {
// console.log(arg);
// console.log("开始更新");
// sendUpdateMessage("开始更新")
// //some code here to handle event
// autoUpdater.quitAndInstall();
// });
sendUpdateMessage("downloaded");
autoUpdater.quitAndInstall();
//lodingWindow.webContents.send('isUpdateNow')
});
ipcMain.on("checkForUpdate", () => {
//执行自动更新检查
if (NODE_ENV !== "development") { //开发环境不检查更新
autoUpdater.checkForUpdates();
}
})
}
// 通过main进程发送事件给renderer进程,提示更新信息
function sendUpdateMessage(type, e) {
if (!lodingWindow.isDestroyed()) {
lodingWindow.webContents.send('updateMessage', type, e)
}
}
preload.js
window.addEventListener('DOMContentLoaded', () => {
//加载完成检查更新
ipcRenderer.send("checkForUpdate");
})
//桥接网页内容
contextBridge.exposeInMainWorld('winApi', {
//程序更新信息
updateMessage: (callback) => ipcRenderer.on("updateMessage", callback),
//下载进度
downloadProgress: (callback) => ipcRenderer.on("downloadProgress", callback),
//立即更新
isUpdateNow: () => ipcRenderer.on("isUpdateNow", () => {
ipcRenderer.send("isUpdateNow");
})
});
参考链接
https://www.electronjs.org/zh/docs/latest/tutorial/tutorial-publishing-updating
https://blog.csdn.net/AK852369/article/details/122123433

浙公网安备 33010602011771号