三行代码解决electron-updater升级失败问题

在21年末,作者遇到了一个棘手的问题,即使用Electron开发的客户端在自动升级时突然闪退,且没有日志记录。经过调查,发现是在新包替换旧包时发生。通过检查API,作者找到了一个解决方案,涉及了进程管理和退出操作。关键代码包括发送'quit'信号,调用'quitAndInstall'方法,并确保窗口被正确销毁。
摘要由CSDN通过智能技术生成

在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();
 });
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值