Я переношу приложение .NET в OS X, используя Mono Framework. Приложение работает нормально, и у нас все сделано, кроме упаковки. Я упаковываю автономную сборку Mono внутри пакета, чтобы избежать зависимостей, и использую этот инструмент для работы: https://github.com/OutOfOrder/MonoKickstart
Структура пакета, которую мы используем, выглядит следующим образом:
OurApp.app
\-Contents
+-Info.plist
+-MacOS
| +-osx - native libraries for osx
| +-mono - mono config files
| \ ... - the OS X kickstart binaries, the .exe file, C# .dlls
\-Resources/
\-icon.icns
Пакет работает нормально, когда функция Gatekeeper OS X отключена, но при попытке подписать его, чтобы он работал всегда, я сталкиваюсь с проблемами...
$ codesign -s "3rd Party Mac Developer Application: Our Certificate" --force --deep --verbose OurApp.app
OurApp.app: bundle format unrecognized, invalid, or unsuitable
In subcomponent: OurApp.app/Contents/MacOS/mono/4.0
Хорошо, я временно удалю каталог mono, чтобы посмотреть, продолжится ли он тогда:
$ codesign -s "3rd Party Mac Developer Application: Our Certificate" --force --deep --verbose OurApp.app
OurApp.app: signed bundle with Mach-O universal (i386) [org.ourcompany.ourapp]
Успех! Или я так думаю, но когда я пытаюсь запустить приложение, оно все еще говорит, что оно все еще заблокировано привратником. И когда я бегу
spctl -a -v OurApp.app
OurApp.app/: rejected
Так что дает? В нем говорится, что он подписал пакет, и с помощью параметра --deep он должен был подписать все библиотеки и тому подобное, если я правильно понял. Что я должен сделать, чтобы это сработало?
Обновлять:
Пробовал подписывать файлы по одному этим.
codesign -s "3rd Party Mac Developer Application: Our Certificate" --force --verbose OurAppExecutable.bin
Но он отказался это делать из-за «подкомпонентов» (даже если я не использую --deep).
Наконец-то я смог подписать его, переместив все остальное, кроме фактического двоичного файла, в папку «Ресурсы», а затем подписал двоичный файл, а затем пакет приложений.
Но тем не менее, он говорит:
spctl -a -v OurApp.app
OurApp.app/: rejected
source=No Matching Rule
Любые дополнительные идеи?