Electron 更新app.asar
开发Electron时发现app.asar无法在运行时修改,搜索了一圈,不是重新安装就是更新没打包过的单个文件,似乎没有能更新app.asar的。
研究了一下,发现通过修改底层的加载代码还是可以做到的。
app.asar在electron.asar\browser\init.js
中被加载,所以只需要在调用app.asar之前加几行代码检测处理即可。
实现
// Update app.asar
const updatePack = path.join(process.resourcesPath, 'update.bin')
if (fs.existsSync(updatePack)) {
const currentPack = path.join(process.resourcesPath, 'app.asar')
// delete old app.asar
fs.unlinkSync(currentPack)
fs.renameSync(updatePack, currentPack)
}
在截图中的代码前面加上即可
效果
- Electron启动时检查有没有更新文件update.bin
- 如果有update.bin则删除原来的app.asar
- 将update.bin重命名为app.asar
- 回到正常启动流程
标签: 无标签
已有 3 条评论
2019年09月10日
你好啊 这个你是怎么控制init.js的呢 虽然可以修改 但是每次打包的时候 都被从新替换了 ....源头在哪呢
2019年09月23日
部署版本生成后去修改这个init.js,以后的打包版本不部署electron.asar,只发放新的app.asar给客户端。如果要改源头,那估计得自己编译electron了
2019年10月27日
找了一圈,你这个方案最满意,不用引入其他乱七八糟的东西,谢谢