Mac的Qt应用程序未启动

时间:2019-04-07 18:09:13

标签: macos download launch macos-mojave

我正在为Mac OS环境使用Qt编写的应用程序。为了生成发布版本,我已经设置了外部服务器。

我看到了:

生成版本后,如果我将应用程序下载并安装在Applications文件夹中,则在打开它时,首先会看到弹出窗口,询问是否确定要打开从Internet(Gatekeeper)下载的应用程序,因此我单击“打开”,然后应用程序死

如果我从终端的CommandLine中打开应用程序,则该应用程序会正常运行。

检查应用程序文件的属性,可以看到它具有com.apple.quarantine。如果手动将其删除,则使用xattr -dr com.apple.quarantine应用程序打开时不会出现任何问题

关于为什么不启动的任何想法? 谢谢前进

1 个答案:

答案 0 :(得分:1)

我的软件遇到了同样的问题,并提出了一个开发者事件,可以找到根本原因:

第一次使用隔离属性启动时,Gatekeeper 将传递一个额外的命令行参数。 据我观察,它的形式是:

-psn_0_<some sequence of numbers>

例如

-psn_0_2445909

在这种情况下,Qt 的 QCommandLineParser 拒绝未知参数并调用 exit(1);

因此有必要过滤 argc / argv 并在将它们传递给 Q{Core,Gui,}Application 之前删除该虚假参数。