在21年末遇到公司遇到一个比较奇葩的bug,electron开发客户端在进行自动升级时中途闪退没有任何日志。
经仔细观察,是在新包下载完后对老版本包进行替换的时候闪退,无意中发现在这一过程里,任务管控器里有两个应用进程,猜想是旧的任务没有完全退出进程,于是查阅api,对关于退出任务、进程、关闭窗口的api进行组合测试,最终总结了一套解决方案~
如下代码:
ipcMain.on('isUpdateNow', (e, arg) => {
//console.log("开始更新");
//some code here to handle event
//重点是以下几行代码,顺序不要乱
mainWindow.webContents.send('quit');
autoUpdater.quitAndInstall();
if(mainWindow&&mainWindow.destroy){
mainWindow.destroy();
}
app.quit();
});
在21年末,作者遇到了一个棘手的问题,即使用Electron开发的客户端在自动升级时突然闪退,且没有日志记录。经过调查,发现是在新包替换旧包时发生。通过检查API,作者找到了一个解决方案,涉及了进程管理和退出操作。关键代码包括发送'quit'信号,调用'quitAndInstall'方法,并确保窗口被正确销毁。
706

被折叠的 条评论
为什么被折叠?



