【发布时间】:2019-01-11 15:07:48
【问题描述】:
我有一个相当大且复杂的应用程序。大约 550 兆的未压缩文件包含大约 36,000 个文件。由于主要源代码在 Python 中,因此我使用 pyInstaller 创建初始 .app 文件。然后,我将应用程序需要的所有其他内容(文档、示例、node_modules 等)复制到XXX.app 文件中的Content/MacOS 子文件夹中。 (是的,它也使用node。)
.app 可以正常工作 - 但需要签名。根据 Apple 的说法,仅仅签名 XXX.app 是不够的:其中的所有组件也需要签名。我首先尝试了这条路线 - 但似乎每个 .txt、.png 和所有其他文件都需要签名。那是 36,000 个codesign 命令!
另一种选择是使用codesign 的--deep 选项。苹果在TN2206 发出警告:
重要提示:虽然 --deep 选项可以应用于签名 操作,不推荐。我们建议您签署代码 在各个阶段由内而外(就像 Xcode 自动执行的那样)。签约 with --deep 仅用于紧急维修和临时调整。
不管怎样,沿着这条路走下去,似乎很多组件都无法通过 codesign 签名:
"bundle format unrecognized, invalid, or unsuitable
In subcomponent: /Users/george/Files/dist/XXX.app/Contents/MacOS/node/node_modules/lodash.debounce"
我的假设是codesign 无法处理某些组件名称,例如lodash.debounce、20140401180856!About.png 或.bin.
我怎么才能签署这个应用程序?
【问题讨论】:
-
你看过here吗?
-
是的,事实上我在我的问题中链接到该文档。我可能遗漏了该文档中的某些特定内容吗?
标签: python node.js macos pyinstaller codesign