不带.app捆绑包的Codesign命令行二进制文件

问题描述

如何对一堆命令行应用程序进行代码签名,例如自建的SVN二进制文件,它们不在.app结构内部,而是作为.tar.gz捆绑包交付?现在我正在使用以下shell命令

EXECUTABLES=$(find . \( -perm +111 -type f -or -name '*.dylib' \))

for EXECUTABLE in $EXECUTABLES
do
    codesign --force --remove-signature $EXECUTABLE
done

for EXECUTABLE in $EXECUTABLES
do
    codesign --force --options=runtime --timestamp --sign $IDENTITY --entitlements "$ENTITLEMENTS_PLIST" -v "$EXECUTABLE"
done

,但看起来这还不够。从网站上下载时,MacOS 10.15仍然拒绝它们。

解决方法

  • 二进制文件必须使用SDK 10.9或更高版本构建
  • 公证需要像.app目录结构一样进行(通过创建.dmg以便上传到Apple)