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
标签:function,sendUpdateMessage,更新,autoUpdater,electron,send,自动更新,error From: https://www.cnblogs.com/wafulo/p/17661948.html