Вспомогательный инструмент магазина приложений для Mac

Мое приложение состоит из двух исполняемых файлов

  • основной исполняемый файл приложения
  • небольшое консольное приложение для обработки некоторых файлов, этот исполняемый файл находится в папке Resources (привилегии root не требуются)

Дело в том, что я не знаю, как отправить это приложение в магазин приложений, я получаю следующий ответ от Apple

Неверная подпись — имя приложения основного пакета приложений по пути appname.app подписано, но подпись недействительна. От codesign поступили сообщения о следующих ошибках: запечатанный ресурс отсутствует или недействителен. В архитектуре: i386.

Если я удалю вспомогательное приложение, оно обойдёт эту ошибку, но приложение вообще не будет работать. Кто-нибудь знает хороший способ или пример того, как встроить вспомогательное приложение и правильно подписать его в магазин приложений ??

Документы Apple не ясны по этому поводу.


person dalexsoto    schedule 01.11.2012    source источник


Ответы (1)


Вам необходимо подписать как основное приложение, так и инструмент вспомогательной консоли.

Подписание .app задокументировано, поэтому я опишу вам, как кодировать помощника.

  • Создайте вручную файл прав и добавьте его во вспомогательный проект (вы можете скопировать файл из основного приложения и удалить ненужные ключи прав)
  • Создайте Info.plist, как описано на странице Добавление Info.plist в инструменты работы с одним файлом (этот шаг не является обязательным, но если вы обнаружите сбой помощника, попробуйте добавить его)

Если основное приложение запускает вспомогательный инструмент, вам необходимо добавить

com.apple.security.inherit

это описано в Включение наследования песочницы приложения

Если основное приложение взаимодействует с помощником каким-то другим образом, возможно, вам нужна связь XPC, или, если вам повезет, будет достаточно использовать Группа приложений

Что-то типа

<key>com.apple.security.application-groups</key>
<array>
    <string>$(TeamIdentifierPrefix)my.package</string>
</array>

Взгляните на AppSandboxLoginItemXPCDemo

По моему опыту, TeamIdentifierPrefix должен быть пустым в среде разработки и иметь значение идентификатор команды при отправке в MAS внимательно относитесь к моим соображениям относительно TeamIdentifierPrefix (т. е. попробуйте сами)

person dafi    schedule 01.11.2012
comment
У меня нет исходного кода вспомогательного инструмента, это консольное приложение, что мне делать в этом случае? - person dalexsoto; 02.11.2012
comment
Это проблема, вы можете подписать двоичный файл, но не знаете, как добавить plist - person dafi; 02.11.2012
comment
Если у вас нет исходного кода для вспомогательного приложения, а есть только двоичный файл, вы можете добавить новую фазу сборки Run Script к своей основной цели с помощью следующей команды /usr/bin/codesign --force --sign $CODE_SIGN_IDENTITY -i ‹helper_tool_identifier› - -права $PROJECT_DIR/‹path_to_helper_entitlment_file› $BUILD_DIR/$CONFIGURATION/$EXECUTABLE_FOLDER_PATH/‹helper_filename› - person Dima Rybachenko; 28.11.2015