我是否需要对应用程序和dmg映像进行公证?

时间:2019-08-06 00:30:14

标签: macos notarize

我有一个经过签名,公证和装订的应用程序,然后存档到一个zip文件中,该文件用作我的Sparkle更新程序的对象。

我还在新用户的DMG映像上分发了它(这是从我的网站上下载的主要内容)。是否可以将经过公证/装订的应用程序放在DMG上,还是需要对DMG文件进行单独的公证和装订流程?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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

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

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

User.prototype.isPasswordValid = function(password) { console.log('current_email'); console.log(this.email); //return bcrypt.compareSync(password, this.password); };

您会看到类似的内容:

spctl -a -t exec -vv MyApp.app

(请注意来源是“ 经过公证的开发者ID”)

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

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

您将看到此消息:

xcrun stapler validate MyApp.app

对DMG文件进行公证就足够了,因为公证服务会对磁盘映像中的任何应用进行公证。来自Apple documentation

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


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

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