2016-06-09 16 views
0

Ich betreibe diese Zeile:Codesign OSX App Bundle mit Perioden in MacOS Verzeichnisnamen

codesign --verbose --force --deep --sign "Developer ID Application: Company" Company.app 

und ich bekomme diese Fehlermeldung:

Company.app: bundle format unrecognized, invalid, or unsuitable 
In subcomponent: /Users/me/repo/client/Company.app/Contents/MacOS/include/python2.7 

ich das Problem verringert haben bis auf die Tatsache, dass ich ein App-Bundle, das einige Unterverzeichnisse im Verzeichnis "Contents/MacOS" enthält, in deren Namen Namen angegeben sind. Nach this, Drosseln Co-Design auf das, weil es ein Verzeichnis mit einem Punkt an sie glaubt sich ein Bündel ist und lehnt es (Hervorhebung von mir):

Note that a location where code is expected to reside cannot generally contain directories full of nested code, because those directories tend to be interpreted as bundles. So this occasional practice is not recommended and not officially supported. If you do do this, do not use periods in the directory names. The code signing machinery interprets directories with periods in their names as code bundles and will reject them if they don't conform to the expected code bundle layout.

Mein Bündel von PyInstaller (getestete Version 3.1 und 3.2 erstellt werden), und die Regie wird automatisch eingezogen. Hier finden Sie alle Verzeichnisse, die dieses Problem haben:

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 

ich here sah, und es gab keinen Hinweis auf dieses Problem, und ich wollte wissen, ob jemand Konfiguration Ideen hat, die das Problem beheben können, ohne vollständig die Abhängigkeiten zu beseitigen von enthalten sein.

Das Bündel wird mit dem folgenden Befehl erstellt:

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 

Antwort

0

Nach dieser ganzen Frage zu schreiben, habe ich bemerkt, dass unser Build-Skript intern eine Kopie der App macht das die Symlinks im Contents/MacOS Verzeichnis gefolgt.

Nur für den Fall, dass ein anderer armer Mensch nach einer ähnlichen Antwort sucht, besteht die Lösung darin, diese Verzeichnisse im Direktivenverzeichnis "Inhalt/Ressourcen" zu speichern und über das MacOS-Verzeichnis mit ihnen zu verlinken.