电子自动更新程序未在OSx中安装

问题描述 投票:0回答:1

电子生成器版本:20.28.4

电子更新版:3.1.2

为OSx,Windows和Ubuntu构建

我正在尝试使用自动更新机制创建一个电子应用程序。我遇到了自动更新程序的问题,特别是对于OSx。它在linux和windows上工作得很好(下载新版本并使用autoUpdater.quitAndInstall()安装;或者当用户退出应用程序时)。但是在OSx上,新版本已下载,但从未安装。

下载更新时触发的事件就是这个,所以我确信实际下载了更新:

autoUpdater.on('update-downloaded', (ev, info) => {
    setImmediate(() => {
        let iChoice = dialog.showMessageBox({
            type: 'question',
            message: oTrad['on-update-downloaded'],
            buttons: [oTrad['quit_and_install'], oTrad['install_later']]
        });
        if (iChoice === 0) {
            setImmediate(() => {
                var browserWindows = BrowserWindow.getAllWindows();
                browserWindows.forEach(function(browserWindow) {
                    browserWindow.destroy();
                });
                autoUpdater.quitAndInstall();
            })
        }
    });
});

当用户单击调用autoUpdater.quitAndInstall()的“退出并安装”时,应用程序实际上并未关闭(仍然在停靠栏中显示为打开),并且实际上从未重新打开。如果我手动终止它然后再次启动它 - >再次触发更新下载,就像从未下载或安装更新一样。我很失落,因为这种机制在Linux和Windows上完美运行。

更新:

我发现我的问题与App Transport Security有关,因为它阻止了Mac上的更新,所以我在package.json中添加了一些配置来绕过:

"extendInfo": {
        "NSAppTransportSecurity": {
          "NSAllowsArbitraryLoads": true
 }
}

我现在的问题是quitAndInstall()函数不起作用。只有在我实际关闭应用程序时才下载并安装新版本。如果我调用quitAndInstall,我将有以下错误:

错误:无可用更新,无法退出并安装本机Squirell.Mac的代理服务器已关闭

提前致谢

electron auto-update
1个回答
1
投票

我为OSX遇到了类似的问题,我解决了这个问题。在退出之前我强制关闭所有窗口

if (iChoice === 0) {
 setImmediate(() => {
    app.removeAllListeners("window-all-closed")
    autoUpdater.quitAndInstall(false)
  })
}
© www.soinside.com 2019 - 2024. All rights reserved.