我跑这条线:
codesign --verbose --force --deep --sign "Developer ID Application: Company" Company.app
我收到此错误:
Company.app: bundle format unrecognized, invalid, or unsuitable
In subcomponent: /Users/me/repo/client/Company.app/Contents/MacOS/include/python2.7
我已经将问题缩小到这样一个事实,即我有一个应用程序包,其中包含Contents / MacOS目录中名称中包含句点的几个子目录。根据{{3}},对此进行编码,因为它认为任何带有句点的目录本身就是一个包并拒绝它(强调我的):
请注意,预期代码所在的位置通常不包含嵌套代码的目录,因为这些目录往往被解释为bundle。因此,不推荐这种偶尔的练习,也不提供官方支持。如果这样做,请不要在目录名称中使用句点。 代码签名机制将名称中包含句点的目录解释为代码包,如果它们不符合预期的代码包布局,则会拒绝。
我的包是由PyInstaller创建的(测试版本为3.1和3.2),导演自动被拉入。以下是出现此问题的所有目录:
Company.app/Contents/MacOS/include/python2.7
Company.app/Contents/MacOS/lib/python2.7
Company.app/Contents/MacOS/lib/python2.7/config
Company.app/Contents/MacOS/qt_menu.nib
Company.app/Contents/MacOS/tcl/http1.0
Company.app/Contents/MacOS/tcl/opt0.4
我看了this,并没有提到这个问题,我想知道是否有人有配置想法可以解决问题,而不会完全消除被包含的依赖关系。
使用以下命令创建包:
python $PYINSTALLER/pyinstaller.py \
-n $APP_NAME \
--paths $MODULE_SEARCH_PATH \
--windowed \
--icon $BUNDLEFILES_DIR/$APP_NAME.icns \
--distpath $BUNDLE_DIR/dist \
--osx-bundle-identifier com.company.$APP_NAME \
--exclude-module core.InternalTool \
main.py
答案 0 :(得分:1)
在写完整个问题之后,我注意到我们的构建脚本在内部制作了一个应用程序的副本,该应用程序遵循Contents / MacOS目录中的符号链接。
为了防止其他一些可怜的灵魂正在寻找类似的答案,解决方案是将这些目录放在Contents / Resources目录中,并从MacOS目录中将它们符号链接。
答案 1 :(得分:0)
我遇到了同样的问题,并且在很多失败之后,我终于可以使codesign
正常工作了。我为此编写了一个配方,并使用脚本来自动修复您的应用:Recipe OSX Code Signing Qt。