electron - Electron 自动更新程序未安装在OSx中

标签 electron auto-update

Electron 生成器版本:20.28.4

Electron 更新程序版本:3.1.2

为OSx,Windows和Ubuntu构建

我正在尝试创建具有自动更新机制的 Electron 应用程序。我遇到了自动更新程序的问题,尤其是对于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,将会遇到以下错误:

Error: No update available, can't quit and install Proxy server for native Squirell.Mac is closed



提前致谢

最佳答案

我在OSX上遇到了类似的问题,并通过编写解决了该问题。在退出之前,我强制关闭所有窗口

if (iChoice === 0) {
 setImmediate(() => {
    app.removeAllListeners("window-all-closed")
    autoUpdater.quitAndInstall(false)
  })
}

关于electron - Electron 自动更新程序未安装在OSx中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852939/

相关文章:

node.js - Electron 打开多个窗口package.json调整

javascript - 在没有序列化的情况下在主窗口和窗口之间共享数组

auto-update - 如何在我的应用程序上实现类似于 chrome 的二进制自动更新?

delphi - 如何更新正在运行的 EXE?

json - Electron编写json文件在dev中工作但在dist中不起作用

electron - 在 Electron 中如何为每个请求发送自定义 header 和值?

javascript - 使用 Electron 记录桌面

ruby-on-rails - after_update 回调导致模型中永无止境的循环

java应用程序更新程序

electron - 将 Electron 应用程序自动更新到特定(非最新)版本