You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS .pkg文件公证失败提示二进制签名无效如何解决?

核心问题

你当前操作流程的核心疏漏是仅对最终的.pkg安装包外层做了签名,没有提前对打包进Payload内的所有可执行二进制、框架、动态库文件完成签名。苹果公证要求pkg中包含的所有代码类文件都必须使用有效的开发者ID签名,且启用 hardened runtime 机制,仅签名pkg外层无法满足公证要求,因此返回对应二进制签名无效的错误。


完整修复方案

  1. 提前签名所有待打包的内部文件
    将你要放入pkg Payload路径的所有内容提前整理完成,对所有可执行文件、framework、动态库逐个执行签名,从最内层的嵌套文件开始向外签,签名命令示例:
codesign --sign "Developer ID Application: 你的苹果账户名称 (团队ID)" \
--options runtime \
--timestamp \
"/待打包文件路径/Python.framework/Versions/3.8/Python"

所有存入/usr/local、Library路径的二进制类文件都需要完成签名,不可遗漏。

  1. 验证内部文件签名有效性
    执行如下命令检查每个文件的签名是否正常:
codesign -vvv /已签名的文件路径

返回valid on disk、satisfies its Designated Requirement即为签名正常。

  1. 生成未签名pkg
    使用Packages工具,将已经完成签名的文件配置到对应Payload路径下,导出未签名的.pkg安装包。

  2. 签名pkg外层
    和你之前的操作一致,使用开发者安装者证书签名pkg本身:

productsign --sign "Developer ID Installer: 你的苹果账户名称 (团队ID)" \
~/Desktop/未签名.pkg \
~/Desktop/已签名.pkg
  1. 提交公证及后续操作
    和你之前的公证流程一致提交即可,公证通过后建议执行如下命令将公证书装订到pkg中,方便用户离线场景下也能正常安装:
xcrun stapler staple ~/Desktop/已签名.pkg

额外提示

你之前的命令示例中使用了中文全角引号,实际执行命令时需要替换为英文半角引号,避免命令解析异常。

内容的提问来源于stack exchange,提问作者Ravindra Kumar Sonkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 23:39:04