Electron 自动升级
官网
官网地址: https://www.electronjs.org/
脚手架
包含自动升级 https://gitee.com/fly2world_admin/electron-quick-start
自动升级
1.Webview页面升级
采用内嵌的http的方式,http也main模块进行通信即可
2.Main模块升级
修改版本号[1.2.3]打包
1代表大版本;2.3代表小版本
大版本目前采用手动校验,如果有,打开浏览器,重新下载将 app.asar 上传到服务器,并填写版本号(略)
比对远程版本和本地版本:确认是否更新
js
// 判断有无版本更新
async function justUpdate() {
loadLocalVersion();
console.log("localVersion-->", localVersion);
await loadRemoteVersion();
console.log("remoteVersion-->", remoteVersion);
if (localVersion.major != remoteVersion.major) {
// 大版本目前采用手动校验,如果有,打开浏览器,重新下载;更新极少,先不做
return;
}
if (localVersion.minor == remoteVersion.minor) {
return;
}
// 需要更新:下载远程版本
download(updatePackageUrl);
}
- 不一样,下载远程版本 app.asar
js
// 下载
function download(fileUrl) {
const destination = "./resources/app.bak";//下载后重命名为 app.bak(无法下载asar后缀)
const file = fs.createWriteStream(destination);
https.get(fileUrl, (response) => {
response.pipe(file);
file.on("finish", () => {
file.close(() => {
console.log("文件下载完成");
// 重命名app.bak为app.asar
renameAsar();
});
});
}).on("error", (err) => {
fs.unlink(destination, () => {
console.error(`文件下载失败:${err.message}`);
});
});
}
- 替换本地app.asar
- 重启客户端
js
// 重命名app.bak为app.asar ,并重启
function renameAsar() {
exec("xcopy /y .\\resources\\app.bak .\\resources\\app.asar");
setTimeout(() => {
// fs.unlink("./resources/app.bak"); //直接删除报错,不删除了
app.quit();
app.relaunch();
}, 5000);// 直接重启也报错,延迟5秒
}