【问题标题】:Qt application for mac not being launchedMac 的 Qt 应用程序未启动
【发布时间】:2019-08-28 22:29:58
【问题描述】:

我正在开发一个用 Qt 为 macOS 环境编写的应用程序。为了生成发布版本,我设置了外部服务器。

我看到了这个:

生成构建后,如果我在 Applications 文件夹中下载并安装应用程序,打开它时,首先会看到弹出窗口询问我是否确定打开从 Internet 下载的应用程序(Gatekeeper),所以我单击打开,然后应用程序死了.

如果我从终端中的命令行打开应用程序,它可以正常工作。

检查应用文件的属性我可以看到它有 com.apple.quarantine。如果手动删除它,使用 xattr -dr com.apple.quarantine 应用程序打开没有任何问题

关于为什么它没有启动的任何想法? 谢谢提前

【问题讨论】:

  • Macos 版本?跑macdeployqt?
  • MacOS 10.14 莫哈韦沙漠。 macqtdeploy 已运行并没有错误结束

标签: macos download launch macos-mojave


【解决方案1】:

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

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

-psn_0_<some sequence of numbers>

例如

-psn_0_2445909

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

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

【讨论】:

    猜你喜欢
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多