无法在另一台 MacBook 上 运行 QT macOS 应用程序
Cannot run QT macOS app on another MacBook
跨平台 QT 应用程序是为 macOS 构建的。如果我在同一台机器上测试这个应用程序,这个应用程序就可以工作。当我创建一个 .dmg
文件时,这也适用于我的机器。当我在另一台机器上测试时,出现错误:
You do not have permission to open the application "MYAPP".
我如何调试它以查看问题出在哪里?
创建 .dmg
文件的步骤:
运行 qmake
和 make
直到我有 MYAPP.app(发布版本)
binarycreator -c config/config.xml -p packages/ setup_MYAPP
这会创建 setup_MYAPP.app
codesign -s “我的 Apple Distribution 配置文件的完整通用名称”setup_MYAPP.app
当我在引号之间提供无意义的名称时,它会抛出一个错误,所以我认为一切正常。
hdiutil create -format UDZO -srcfolder setup_MYAPP.app MYAPP.dmg
这会创建 MYAPP.dmg,并且安装程序拒绝在另一台 macbook 上 运行。
或者:
运行 qmake
和 make
直到我有 MYAPP.app(发布版本)
codesign -s "Full common name of my Apple Distribution profile" MYAPP.app
macdeployqt MYAPP.app/ -dmg -codesign="Full common name of my Apple Distribution profile" -appstore-compliant
这会创建 MYAPP.dmg,并且应用程序拒绝在另一台 macbook 上 运行。
好的,看来正确答案是“这很复杂”。
我没有成功创建可以在 MAC App Store 之外共享的安装程序。 Apple 已将其限制在我只能屈服于官僚主义和漂亮但非常糟糕的文档的地步。
- 从 macOS 10.15.5 开始,Mac App Store 之外的分发需要公证:请参阅https://developer.apple.com/news/?id=04102019a。
- Notarization表示对代码进行签名并上传到Apple。 Apple 将执行一些魔术检查并将其列在某些内部数据库中。
- 公证需要 Developer ID 证书:请参阅 https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/resolving_common_notarization_issues#3087721 这与应用开发和 App Store 分发所需的证书不同 (为什么,Apple,为什么?)
- 要获得开发者 ID 证书,您需要填写 https://developer.apple.com/contact/kext 处的表格,该表格用于编写内核扩展。 内核扩展。 (为什么,Apple,为什么?)
- 当 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
最后一个 运行 将 return 另一个 ID,格式为 abcdef01-2345-6789-abcd-ef0123456789
,您可以使用该 ID 跟进您的公证请求:
> xcrun altool -u USER_EMAIL -p APP_SPECIFIC_PASSWORD --notarization-info abcdef01-2345-6789-abcd-ef0123456789
您还会收到一封包含 link 公证结果的邮件。
我没有成功,我放弃了。我放弃了。 运行 的下一个勇敢的灵魂在阅读本文后可能会得救一些时间。祝你好运,愿你在我失败的地方成功!
跨平台 QT 应用程序是为 macOS 构建的。如果我在同一台机器上测试这个应用程序,这个应用程序就可以工作。当我创建一个 .dmg
文件时,这也适用于我的机器。当我在另一台机器上测试时,出现错误:
You do not have permission to open the application "MYAPP".
我如何调试它以查看问题出在哪里?
创建 .dmg
文件的步骤:
运行
qmake
和make
直到我有 MYAPP.app(发布版本)binarycreator -c config/config.xml -p packages/ setup_MYAPP
这会创建 setup_MYAPP.app
codesign -s “我的 Apple Distribution 配置文件的完整通用名称”setup_MYAPP.app
当我在引号之间提供无意义的名称时,它会抛出一个错误,所以我认为一切正常。
hdiutil create -format UDZO -srcfolder setup_MYAPP.app MYAPP.dmg
这会创建 MYAPP.dmg,并且安装程序拒绝在另一台 macbook 上 运行。
或者:
运行
qmake
和make
直到我有 MYAPP.app(发布版本)codesign -s "Full common name of my Apple Distribution profile" MYAPP.app
macdeployqt MYAPP.app/ -dmg -codesign="Full common name of my Apple Distribution profile" -appstore-compliant
这会创建 MYAPP.dmg,并且应用程序拒绝在另一台 macbook 上 运行。
好的,看来正确答案是“这很复杂”。
我没有成功创建可以在 MAC App Store 之外共享的安装程序。 Apple 已将其限制在我只能屈服于官僚主义和漂亮但非常糟糕的文档的地步。
- 从 macOS 10.15.5 开始,Mac App Store 之外的分发需要公证:请参阅https://developer.apple.com/news/?id=04102019a。
- Notarization表示对代码进行签名并上传到Apple。 Apple 将执行一些魔术检查并将其列在某些内部数据库中。
- 公证需要 Developer ID 证书:请参阅 https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/resolving_common_notarization_issues#3087721 这与应用开发和 App Store 分发所需的证书不同 (为什么,Apple,为什么?)
- 要获得开发者 ID 证书,您需要填写 https://developer.apple.com/contact/kext 处的表格,该表格用于编写内核扩展。 内核扩展。 (为什么,Apple,为什么?)
- 当 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
最后一个 运行 将 return 另一个 ID,格式为 abcdef01-2345-6789-abcd-ef0123456789
,您可以使用该 ID 跟进您的公证请求:
> xcrun altool -u USER_EMAIL -p APP_SPECIFIC_PASSWORD --notarization-info abcdef01-2345-6789-abcd-ef0123456789
您还会收到一封包含 link 公证结果的邮件。
我没有成功,我放弃了。我放弃了。 运行 的下一个勇敢的灵魂在阅读本文后可能会得救一些时间。祝你好运,愿你在我失败的地方成功!