公证和装订包含 .app 的 .zip 最有效的方法是什么?

2024-02-11

目前,一个.app/文件夹不能提交公证,必须先打包。另一方面,票证不能钉在.zip公证成功后。苹果文档 https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow

这将创建一个如下流程:

  1. 构建应用程序
  2. Zip the .app/
  3. 提交.zip用于公证
  4. 解压缩该.zip
  5. 将票钉在.app/
  6. 重新压缩.app/用于分发

我们的具体用例是,我们的应用程序最初将由来自以下位置的用户安装:.dmg而后续更新是通过下载的.zip。公证.dmg非常简单。压缩内容则是另一回事了。

有没有比上述步骤更有效的方法?


不,丹,你已经做到了。您的用例与我的类似,我就是这样做的。就我而言,我分发的 .pkg 包含一个应用程序、一个卸载程序、几个内核扩展,但对于应用程序来说,概念是相同的。顺便说一句,就像您的 dmg 一样,我正在分发 pkg 以供下载,然后压缩该 pkg 以进行 Sparkle 更新。

这个过程看起来很奇怪,直到您将 zip 文件视为打包和提交应用程序包的一种方式。您想要对应用程序进行公证,并将生成的公证结果装订到应用程序包中。你这样做:

  • 通过提交应用程序包的压缩包来对应用程序进行公证。
  • 公证成功完成后,将结果装订到应用程序包中。
  • 打包应用程序包以进行分发(在您的情况下,将其添加到 dmg)。
  • 对 dmg 进行公证,并在 dmg 上装订。

为了更方便:如果您在 makefile 中执行此操作,make 可以在装订之前自动等待公证。我这样做:

notarizationRequestID=$(shell xcrun altool --notarize-app \
                                   --primary-bundle-id com.mycompany.appID \
                                   --username $(DEV_USERNAME)
                                   --password $(DEV_PASSWORD)
                                   --asc-provider $(DEV_PROVIDER) \
                                   --file myApp.app.zip \
              | awk '/RequestUUID/ { print $$NF; }') ;\

while ! xcrun altool --notarization-info $$notarizationRequestID \
                     --username $(DEV_USERNAME)
                     --password $(DEV_PASSWORD)
                     --asc-provider $(DEV_PROVIDER) \
                     --output-format xml \
              | grep -q 'https://osxapps-ssl.itunes.apple.com/itunes-assets' ;\
    do sleep 5 ;\
    echo "." ;\
done ;\

如果您通过 Sparkle 分发更新,您还需要收集应用程序强制转换元数据,以便将其粘贴到应用程序强制转换.xml 中。在 makefile 的末尾:

@echo "——————————————————————————————————"
@echo "  Results for Sparkle Update XML  "
@echo "——————————————————————————————————"
@echo
@echo "version:           " `defaults read myApp.app/Contents/Info CFBundleVersion`
@echo "shortVersionString:" `defaults read myApp.app/Contents/Info CFBundleShortVersionString`
@echo "dsaSignature:      " `$MyAppSource/Libraries/Sparkle/bin/sign_update myAppInstaller.pkg.zip $MyAppSource/Resources/UpdateSigningKeys/dsa_priv.pem`
@echo "length:            " `stat -f%z "myApp.pkg`
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

公证和装订包含 .app 的 .zip 最有效的方法是什么? 的相关文章

随机推荐