mac 的 Qt 应用程序未启动
Qt application for mac not being launched
我正在为 macOS 环境开发一个用 Qt 编写的应用程序。为了生成发布版本,我设置了外部服务器。
我看到了这个:
生成构建后,如果我下载并安装应用程序到应用程序文件夹,打开它时,首先我看到弹出窗口询问我是否确定打开从 Internet (Gatekeeper) 下载的应用程序,所以我单击打开,然后应用程序死亡。
如果我从终端中的 CommandLine 打开它,应用程序工作正常。
检查应用文件的属性我可以看到它有com.apple.quarantine。如果手动删除它,使用 xattr -dr com.apple.quarantine 应用程序打开没有任何问题
关于为什么它没有启动的任何想法?
谢谢提前
我的软件遇到了同样的问题,并提出了一个开发人员事件,从而找到了根本原因:
首次使用隔离属性启动时,Gatekeeper 将传递一个额外的命令行参数。
据我观察,它的形式是:
-psn_0_<some sequence of numbers>
例如
-psn_0_2445909
Qt 的 QCommandLineParser
拒绝未知参数并在这种情况下调用 exit(1);
。
因此有必要过滤 argc
/ argv
并在将它们传递给 Q{Core,Gui,}Application
.
之前删除该虚假参数
我正在为 macOS 环境开发一个用 Qt 编写的应用程序。为了生成发布版本,我设置了外部服务器。
我看到了这个:
生成构建后,如果我下载并安装应用程序到应用程序文件夹,打开它时,首先我看到弹出窗口询问我是否确定打开从 Internet (Gatekeeper) 下载的应用程序,所以我单击打开,然后应用程序死亡。
如果我从终端中的 CommandLine 打开它,应用程序工作正常。
检查应用文件的属性我可以看到它有com.apple.quarantine。如果手动删除它,使用 xattr -dr com.apple.quarantine 应用程序打开没有任何问题
关于为什么它没有启动的任何想法? 谢谢提前
我的软件遇到了同样的问题,并提出了一个开发人员事件,从而找到了根本原因:
首次使用隔离属性启动时,Gatekeeper 将传递一个额外的命令行参数。 据我观察,它的形式是:
-psn_0_<some sequence of numbers>
例如
-psn_0_2445909
Qt 的 QCommandLineParser
拒绝未知参数并在这种情况下调用 exit(1);
。
因此有必要过滤 argc
/ argv
并在将它们传递给 Q{Core,Gui,}Application
.