签署Mac App安装程序的困惑

时间:2014-12-05 06:48:57

标签: xcode macos installer

我无法理解如何将我的Mac应用程序打包到安装程序(.pkg)并签名以便在App Store(例如我自己的网站)外部进行分发。

Xcode 6的管理器/存档窗口为您提供了四种导出Mac应用程序存档的选项:

  1. 导出开发者ID签名的应用程序 - 签名身份:开发者ID申请:(< 10位十六进制数>)

  2. 保存Mac App Store部署 - 签名身份:第三方Mac开发人员应用程序(< 10位十六进制数>)

  3. 导出为Mac安装程序包签名身份:第三方Mac开发人员应用程序(< 10位十六进制数>)

  4. 导出为Mac应用程序 - (立即提示保存位置)

  5. 请注意,除导出安装程序包之外的选项如何不使用“第三方Mac开发人员安装程序”身份(我的钥匙串中也有该证书),但“第三方Mac开发人员< strong>申请“签名身份。这是为什么?也许在这里签名的是安装程序中包含的应用程序,我仍然需要签署包本身? (顺便说一句,我试过这个但是在通过电子邮件将pkg发送给自己之后,但是双击它会产生可怕的“无法打开,因为它来自一个身份不明的开发者”警告)

    Apple的文档有点简洁,涵盖了很多方面(签名包,可执行文件,框架等),并且似乎以命令行工具codesignproductsign为中心; S.O.的相关问题也是如此。那么,上面列出的Organizer出口选项#3的目的是什么呢?我可以用吗?我应该使用命令行构建软件包,还是可以利用此Xcode / GUI工具并在之后签署导出的.pkg? (我猜是使用命令行)。

    为什么Xcode“无法正常工作”,并且一次性打包/签署应用/包?我的安装程序不需要任何奇特的逻辑或列出任何支持文件/目录结构;它只是我.app周围的“包装”。

    ADDENDUM:我尝试从Organizer导出.app捆绑包,签名为“开发者ID应用程序”(上面的选项#1),使用旧的PackageMaker.app打包,并且使用命令行进行签名。但我仍然收到“未知开发人员”错误,并且在隔离后无法打开安装程序。

1 个答案:

答案 0 :(得分:2)

傻傻的我;我使用伪造的证书名称“第三方Mac开发者安装程序:(我的名字)”而不是“开发者ID安装程序:(我的名字)”。

使用以下方法进行快速测试:

spctl --assess --type install <packagename>.pkg

给出:

<packagename>.pkg: rejected

...这意味着我没有正确签名包以作为安装程序运行。

修复身份名称后,使用以下方式签署.pkg文件(使用PackageMaker或Xcode构建):

productsign --sign "Developer ID Installer <MyName>" ./Unsigned.pkg ./Signed.pkg

spctl命令运行无声(没有反馈 - 成功?),如果我通过电子邮件将结果包发送给自己并下载它们(隔离区),安装程序将启动并安装应用程序没有问题。

编辑:我会等几天才接受我自己的答案,以防有人分享进一步的知识。提示。

相关问题