7

I have an app that is signed, notarized and stapled, then archived into a zip file which is used as the object for my Sparkle updater.

I also distribute it on a DMG image for new users (and is the main download from my website). Can I just put the notarized/stapled app on a DMG, or do I need to go through a separate notarization and staple process for the DMG file?

4

3 回答 3

4

您只需对应用程序进行一次公证:

  1. 使用签名的应用程序创建 DMG 文件。
  2. 签署、公证和装订 DMG 文件。
  3. 打开 DMG 文件并将应用程序复制到外部。装订它并为 Sparkle [1]创建一个存档。

要确认应用程序已公证,请运行以下命令:

spctl -a -t exec -vv MyApp.app

你会看到类似的东西:

MyApp.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Name (ID)

(注意来源是“ Notarized Developer ID”)

您还可以通过运行以下命令来确认票证已装订:

xcrun stapler validate MyApp.app

你会看到这条消息:

Processing: /path/to/MyApp.app
The validate action worked!

公证 DMG 文件就足够了,因为公证服务会公证磁盘映像中的任何应用程序。从苹果文档

或者,您可以将应用程序、内核扩展和其他软件放入容器中,例如磁盘映像,并对容器进行公证。公证服务接受磁盘映像(UDIF 格式)、签名的平面安装程序包和 ZIP 档案。它也处理嵌套容器,就像磁盘映像中的包一样。


[1] 您也可以将 DMG 文件用于 Sparkle。不需要第二个存档。来自Sparkle 文档

Sparkle 支持从DMG、ZIP 存档、tarball 和安装程序包进行更新,因此您通常可以重复使用相同的存档在您的网站上分发您的应用程序以及 Sparkle 更新。

于 2020-02-08T16:24:51.297 回答
4

根据我在 Apple 文档中阅读的内容(请参阅下面的引用)以及我对我的应用程序和其他应用程序的经验,只需对 DMG 进行公证就足够了。您不必先对应用程序进行公证...

“例如,如果您提交包含签名安装程序包的磁盘映像,其中包含应用程序包,公证服务会为磁盘映像、安装程序包和应用程序包生成票证。”

https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow#3087734

于 2020-03-22T14:57:46.297 回答
3

您必须压缩应用程序,发送 zip 文件进行公证,然后装订原始应用程序。然后用装订的应用程序制作 dmg,压缩 dmg,发送公证,装订 dmg,然后分发。

于 2019-10-14T06:43:17.423 回答