我正在尝试编写一个脚本来公证一个应用程序,以便在Mac应用程序商店之外分发。我(在过去)成功地公证了一个.dmg,但是由于某种原因,我遇到了一个.zip文件的麻烦。我在日志文件中收到的公证错误是没有代码签名。
下面是我的公证代码:
cd app && zip MyZip.zip Test.app
cd -
xcrun altool --notarize-app \
--file "app/Myzip.zip" \
--username "abcabcabc" \
--password "abcabcabc" \
--asc-provider "abcabcabc" \
--primary-bundle-id "a.b.c.com"当我检查验证Test.app上的代码签名时,它似乎没有问题:
codesign -vvv --deep --strict app/Test.app
app/Test.app: valid on disk
app/Test.app: satisfies its Designated Requirement在.zip文件上运行同样的命令--不出所料,返回一个错误:
codesign -vvv --deep --strict app/MyZip.zip
app/MyZip.zip: code object is not signed at all这是正确的,因为我没有在压缩文件上签名。然而,当我阅读别人的经验时,他们似乎在谈论上传用于公证的.zip文件,就好像没有问题一样(例如,这里的步骤2和3:What is the most efficient way to notarize and staple a .zip containing a .app?)。自2019年以来是否有什么变化--我现在是否需要手动使用codesign工具来使用与应用程序签名相同的身份对我的压缩文件进行签名?我甚至按照苹果在文档(https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow)中的要求尝试了以下内容:
/usr/bin/ditto -c -k --keepParent "app/Test.app" "app/MyZip.zip"但是运行codesign -vvv --deep --strict app/MyZip.zip仍然会返回code object is not signed at all。
我需要自定义代码签名吗?或者有没有一种方法可以压缩它,但以某种方式保留codesign签名?谢谢。
发布于 2021-05-11 19:11:58
这对我来说是有效的(刚刚测试过):
codesign --force \
--timestamp \
--options runtime \
--sign "Developer ID Application: <USER> (<TEAMID>)" project1.app
zip -r test.zip project1.app
xcrun altool --notarize-app \
--primary-bundle-id "com.company.project1" \
-u "<EMAIL>" \
-p "<PWD>" \
-t osx \
-f test.zip至于自2019年以来的变化:2019年9月3日,苹果宣布,在2020年1月之前,开发人员可以对新版本的应用程序进行公证,即使它们没有经过强化或完全符合正常要求。最后期限后来被延长到2020年2月3日。在此之后,您需要满足所有前提条件:
为应用程序和命令行目标的增强运行时功能启用distribute.
https://stackoverflow.com/questions/67480956
复制相似问题