【问题标题】:Confusion around Signing Mac App Installer对签署 Mac 应用程序安装程序感到困惑
【发布时间】:2015-02-03 07:09:26
【问题描述】:

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

Xcode 6 的 Organizer/Archives 窗口为您提供了四个导出 Mac 应用存档的选项:

  1. 导出开发者 ID 签名的应用程序 - 签名身份:开发者 ID 应用程序:()

  2. 为 Mac App Store 部署保存 - 签名身份:第 3 方 Mac 开发者应用程序()

  3. 导出为 Mac 安装程序包 签名身份:第 3 方 Mac 开发者应用程序()

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

请注意,导出安装程序包的选项不使用“3rd Party Mac Developer Installer”身份(我的钥匙串中也有该证书),而是“3rd Party Mac Developer 应用程序”签名身份。这是为什么?也许这里正在签名的是安装程序中包含的应用程序,我仍然需要对包本身进行签名? (顺便说一句,我试过这个,但是在通过电子邮件将 pkg 发送给自己之后,但双击它会产生可怕的“无法打开,因为它来自身份不明的开发人员”警告)

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

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

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

【问题讨论】:

    标签: xcode macos installation


    【解决方案1】:

    愚蠢的我;我使用了伪造的证书名称“3rd Party Mac Developer Installer: (My Name)”而不是“Developer ID Installer: (My Name)”。

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

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

    给予:

    <packagename>.pkg: rejected

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

    在修复身份名称并使用以下命令对.pkg 文件(使用 PackageMaker 或 Xcode 构建)进行签名后:

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

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

    编辑:我会等几天再接受我自己的答案,以防有人分享更多的知识。提示。

    【讨论】:

    • 但是说真的,Xcode 应该对包以及包含的二进制文件进行签名。
    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多