Все улажено. Было несколько вещей, которые нужно было исправить. Вот они, в надежде, что они помогут кому-то еще в будущем. TN2206 от Apple полон полезных советов и заслуживает понимания.
√ Извлеките все, что не связано с вашей основной исполняемой библиотекой, из папки Contents/MacOS
. Переместите его на Contents/Resources
и установите символические ссылки.
√ Если вы используете Node, он должен быть в Contents / Resources. Установите ссылку из Contents/MacOS
следующим образом, пока вы находитесь в папке Contents/MacOS
:
ln -s ../Resources/node node
√ Ссылки должны быть относительными, поскольку приложение должно быть переносимым. При установке в другой системе полный путь не будет таким же.
√ Не используйте флаг --deep
, даже если это заманчиво. Мне нужно 110 codesign
операторов, по одному для каждой библиотеки. Python считается библиотекой:
codesign --force --verify --verbose=4 --sign "Developer ID Application: NS BASIC Corporation" ~/Files/dist/AppStudio.app/Contents/MacOS/Python
√ После того как вы сделали codesign
для каждой библиотеки, codesign
само приложение:
codesign --force --verify --verbose=4 --sign "Developer ID Application: NS BASIC Corporation" ~/Files/dist/AppStudio.app
Затем убедитесь, что все работает правильно:
codesign --display --verbose=4 ~/Files/dist/AppStudio.app
√ Если вы видите сообщение типа
"code object is not signed at all
In subcomponent: /Users/george/Files/dist/AppStudio.app/Contents/MacOS/_Ctl.so"
Это означает, что вы пропустили библиотеку.
√ Если вы получаете сообщение, подобное этому:
"bundle format unrecognized, invalid, or unsuitable
In subcomponent: /Users/george/Files/dist/AppStudio.app/Contents/MacOS/node/node_modules/.bin"
Это не библиотека. Вытащите его из Contents/MacOS
, переместите в Contents/Resources
и установите символическую ссылку. (Я смотрю на тебя, cacert.pem
!)
√ Как только вы думаете, что у вас есть, используйте эту команду, чтобы проверить окончательное приложение:
codesign --vvvv AppStudio.app
Удачи в вашем проекте!