0

为 macOS 构建了一个跨平台的 QT 应用程序。如果我在同一台机器上测试它,这个应用程序就可以工作。当我创建一个.dmg文件时,这也适用于我的机器。当我在另一台机器上测试时,我得到了错误:

您无权打开应用程序“MYAPP”。

我该如何调试它以查看问题所在?


我创建.dmg文件的步骤:

  1. 运行qmakemake直到我有 MYAPP.app(发布版本)

  2. binarycreator -c config/config.xml -p packages/ setup_MYAPP

    这将创建 setup_MYAPP.app

  3. codesign -s "我的 Apple 分发配置文件的完整通用名称" setup_MYAPP.app

    当我在引号之间提供一个无意义的名称时,它会引发错误,所以我认为这很好。

  4. hdiutil create -format UDZO -srcfolder setup_MYAPP.app MYAPP.dmg

    这将创建 MYAPP.dmg,并且安装程序拒绝在另一台 macbook 上运行。


或者:

  1. 运行qmakemake直到我有 MYAPP.app(发布版本)

  2. codesign -s "Full common name of my Apple Distribution profile" MYAPP.app

  3. macdeployqt MYAPP.app/ -dmg -codesign="Full common name of my Apple Distribution profile" -appstore-compliant

    这会创建 MYAPP.dmg,并且该应用程序拒绝在另一台 macbook 上运行。

4

1 回答 1

0

好的,看来正确的答案是“这很复杂”。

我没有成功创建可以在 MAC App Store 之外共享的安装程序。Apple 将这一点限制在我只是屈服于官僚主义和好看但非常糟糕的文档的地步。


但是,如果您已经能够获得宝贵的开发者 ID 证书,这些似乎是成功公证您的应用程序的步骤:

> security unlock-keychain -p PASSWORD !/Library/Keychains/login.keychain-db
> codesign --timestamp="http://timestamp.apple.com/ts01" --options runtime --verbose=3 --force --deep --sign "NAME OF CERTIFICATE" PATH/TO/APP.app
> xcrun altool -u USER_EMAIL -p APP_SPECIFIC_PASSWORD -notarize-app -t osx --primary-bundle-id INVENT_YOUR_OWN_UNIQUE_ID -f PATH/TO/APP.app

最后一次运行将返回另一个 ID,格式为abcdef01-2345-6789-abcd-ef0123456789,您可以使用该 ID 跟进您的公证请求:

> xcrun altool -u USER_EMAIL -p APP_SPECIFIC_PASSWORD  --notarization-info abcdef01-2345-6789-abcd-ef0123456789

您还将收到一封邮件,其中包含指向公证结果的链接。


我没有成功,我放弃了。我放弃了。阅读本文后,下一个遇到这种情况的勇敢灵魂可能会被拯救一段时间。祝你好运,愿你在我失败的地方成功!

于 2022-01-31T17:49:22.127 回答