2014-12-05 75 views
3

我无法理解如何将我的Mac应用程序打包到安装程序(.pkg)中并在App Store(例如我自己的网站)上签名以在之外分发签署Mac App安装程序时出现混乱

的Xcode 6的组织者/档案馆窗口为您提供了四个选项导出Mac应用程序归档:

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

  2. 节省Mac App Store的部署 - 签约身份:第三方Mac开发者应用程序(< 10位十六进制数字>)

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

  4. 导出为Mac适用的 - (提示输入保存位置的时候了)

注意如何大于出口选项安装程序包不使用“第三方Mac开发者安装”身份(这certif icate我也在我的钥匙串中),但是“第三方Mac开发者应用程序”签名的身份。这是为什么?也许这里签署的是安装程序中包含的应用程序,我仍然必须自己签署包裹? (顺便说一下,我尝试过,但在通过电子邮件发送pkg给自己之后,双击它会产生可怕的“无法打开,因为它来自不知名的开发者”警告)

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

为什么Xcode不能“正常工作”,并且一次打包/签名应用/软件包?我的安装程序不需要任何花哨的逻辑或设置任何支持文件/目录结构;它只是我的.app的“包装”。

附录:我试图代替从组织者导出一个.app束,签署“显影剂ID的应用”(上面的选项#1),与旧的包PackageMaker.app它和签名,使用命令行。但是我仍然收到“未知的开发者”错误,并且在隔离后无法打开安装程序。

回答

1

傻傻的我;我正在使用虚假证书名称“第三方Mac Developer Installer :(我的名字)”而不是“Developer ID Installer :(我的名字)”。

快速测试使用:

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

给出:

<packagename>.pkg: rejected

...这意味着该包不运行作为安装程序我想正确签名。

固定标识名称,并签署.pkg文件后使用(带有PackageMaker或Xcode中内置):

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

,该spctl命令运行无声(无反馈 - 成功?),如果我将生成的软件包通过电子邮件发送给自己,并下载它们(隔离),安装程序将启动并安装该应用程序,而不会出现问题。

编辑:我会等待几天,然后再接受我自己的答案,以防某人共享更多知识点。

+0

但是,严重的是,Xcode应该签署包以及包含的二进制文件。 – 2014-12-05 07:36:38