我有一个应用程序,已签名、公证并被钉住,然后压缩成zip文件,作为Sparkle更新程序的对象。
我还将其分发到DMG镜像中供新用户使用(也是我网站上的主要下载)。 我是否可以只将已经公证/钉住的应用程序放在DMG中,还是需要单独进行DMG文件的公证和钉住过程?
我有一个应用程序,已签名、公证并被钉住,然后压缩成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文件进行公证即可,因为公证服务会对磁盘映像中的任何应用程序进行公证。来自苹果文档:
或者,您可以将应用程序、内核扩展和其他软件放入容器中,例如磁盘映像,并对容器进行公证。公证服务接受磁盘映像(UDIF格式)、签名的平面安装程序包和ZIP存档。它还处理嵌套的容器,例如磁盘映像中的软件包。
[1] 您也可以将DMG文件用于Sparkle,不需要第二个存档。来自Sparkle文档:
Sparkle支持从DMG、ZIP存档、tarball和安装程序包更新,因此您通常可以在您的网站上重复使用相同的存档来分发您的应用程序以及Sparkle更新。
您需要将应用程序压缩成zip格式,发送zip文件以进行公证,然后将原始应用程序装订。接着,使用已装订的应用程序创建dmg文件,将dmg压缩,发送给公证机构进行公证,再将dmg装订并分发。