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/