我有一个经过签名、公证和装订的应用程序,然后存档到 zip 文件中,该文件用作我的 Sparkle 更新程序的对象。
我还以 DMG 映像的形式为新用户分发它(这是我网站上的主要下载内容)。我可以将经过公证/装订的应用程序放在 DMG 上,还是需要对 DMG 文件进行单独的公证和装订流程?
您只需对应用程序进行一次公证:
要确认应用程序经过公证,请运行以下命令:
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 文件进行公证就足够了,因为公证服务会对磁盘映像内的任何应用程序进行公证。来自Apple文档:
或者,您可以将应用程序、内核扩展和其他软件放入容器中,例如磁盘映像,然后对容器进行公证。公证服务接受磁盘映像(UDIF 格式)、签名的平面安装程序包和 ZIP 存档。它也处理嵌套容器,就像磁盘映像内的包一样。
[1] 您也可以使用 Sparkle 的 DMG 文件。无需第二个存档。来自 Sparkle 文档:
Sparkle 支持从 DMG、ZIP 存档、tarball 和安装程序包进行更新,因此您通常可以重复使用相同的存档在网站上分发应用程序以及 Sparkle 更新。
根据我在 Apple 文档中读到的内容(请参阅下面的引用)以及我使用我的应用程序和其他应用程序的经验,只需对 DMG 进行公证就足够了。您不必先对App进行公证...
“例如,如果您提交的磁盘映像包含已签名的安装程序包,其中包含应用程序包,则公证服务会生成磁盘映像、安装程序包和应用程序包的票证。”
您必须压缩应用程序,发送压缩包进行公证,然后装订原始应用程序。然后使用装订的应用程序制作 dmg,压缩 dmg,发送以进行公证,装订 dmg,然后分发。
据我在 2024 年阅读Apple 文档了解到,人们需要对 DMG 以及应用程序进行公证。
或者,您可以将应用程序、内核扩展和其他软件放入容器(例如磁盘映像)中,并对容器进行公证。公证服务接受磁盘映像(UDIF 格式)、签名的平面安装程序包和 ZIP 存档。它也处理嵌套容器,就像磁盘映像内的包一样。
重要:如果您通过自定义第三方安装程序分发软件,则需要两轮公证。首先,您对安装程序的有效负载(安装程序将安装的所有内容)进行公证。然后,您将经过公证的(并装订的,如将票证装订到您的发行版中所述)项目打包到安装程序中,并像对待任何其他可执行文件一样对其进行公证。如果您使用网络安装程序,请分别对安装程序及其下载的项目进行公证。