一.、下载更新插件 electron-updater
yarn add electron-updater --save
publish: [
{
provider: "generic",
url: "http://127.0.0.1",
},
],
二、创建 autoUpdate.js 文件
// autoUpdater.js
const path = require("path");
const { autoUpdater } = require("electron-updater");
//自动下载更新
// autoUpdater.autoDownload = false;
//退出时自动安装更新
// autoUpdater.autoInstallOnAppQuit = false;
module.exports = (url, win) => {
// console.log("url ==:", url);
// console.log("win ==:", win);
// console.log("NODE_ENV ==:", NODE_ENV);
// console.log("NODE_ENV ==:", process.env.NODE_ENV);
// console.log("__dirname ==:", __dirname);
// latest.yml 线上
autoUpdater.updateConfigPath = path.join(
__dirname,
process.env.NODE_ENV === "development" ? "latest.yml" : "../app-update.yml"
);
// console.log("updateConfigPath ==:", autoUpdater._appUpdateConfigPath);
// 设置更新源url
autoUpdater.setFeedURL(url);
//检查是否有更新
autoUpdater.checkForUpdates();
// 更新异常
autoUpdater.on("error", function (e, message) {
win.send("error", message);
});
//有新版本时
autoUpdater.on("update-available", function (e, message) {
win.send("update-available", message);
});
// 更新下载进度事件
autoUpdater.on("download-progress", function (e, progressObj) {
win.send("download-progress", e.percent);
});
// 更新下载完成事件
autoUpdater.on("update-downloaded", function (e, progressObj) {
win.send("update-downloaded", progressObj);
autoUpdater.quitAndInstall();
});
//没有新版本时
autoUpdater.on("update-not-available", (_info) => {
console.log("没有更新");
});
};
三、主进程引入封装好的autoUpdate.js 文件
// ======================================================================
// 更新模块
// ======================================================================
// 主进程监听渲染进程传来的信息
const Updater = require("./autoUpdate");
Object.defineProperty(app, "isPackaged", {
get() {
return true;
},
});
ipcMain.on("update", (event, Url) => {
Updater(Url, win.webContents);
});
四、需要更新的时候触发即可
ipcRenderer.send("update", Url);