【问题标题】:How to codesign a shell script executable inside a Mac app bundle?如何在 Mac 应用程序包中对可执行的 shell 脚本进行代码设计?
【发布时间】:2015-08-07 07:04:48
【问题描述】:
我在myApp.app/Contents/MacOS/ 下有一个可执行的shell 脚本。我们的代码签名管道抱怨子组件(此脚本)未签名。
我应该如何签名?我们当前的管道有codesign --sign 调用,其中包含硬编码的证书编号和我不太了解的字段详细信息。基本上只有应用程序和应用程序内的一些插件包得到了代码签名。
我找不到关于如何对 shell 脚本进行代码签名的专门文档。
【问题讨论】:
标签:
xcode
macos
shell
codesign
【解决方案1】:
FWIW...迟到的答案...但是,它可能对某人有所帮助:如果您已指定(通过 Info.plist's CFBundleExecutable 键的值)脚本作为您的应用程序的可执行文件,那么当您尝试签署所述脚本时,您应该确保其他所有内容都已签名。
注意:这是我通过 bash 脚本使用 codesign 的经验(因此,不使用 XCode)。 Apple 的文档说您应该“从内到外”签署您的应用程序包;这是我的解释,它似乎对我们来说很好。
【解决方案2】:
项目设置的 Build Phases > Run Script 部分中类似于以下 shell 脚本的内容应该可以工作...
/usr/bin/codesign --force --sign "iPhone Developer" --preserve-metadata=identifier,entitlements --timestamp=none $BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Frameworks/$framework