Подтвердить что ты не робот

Проблема подписи кода для проекта с несколькими целевыми объектами

Я пытаюсь получить мое приложение, которое не отображается в Dock, чтобы иметь возможность запускать при входе в систему. Это сложно, и включает в себя создание второго вспомогательного приложения, которое вы добавляете в качестве элемента запуска. Это вспомогательное приложение отвечает только за запуск основного приложения, а затем выход из него.

Я выполнил инструкции здесь и здесь и это работает как шарм - проблема, конечно, в подписи кода. У меня две цели; цель вспомогательного приложения копируется в подкаталог Contents/Library/LoginItems основного пакета во время компиляции. Каждый пакет имеет свой собственный идентификатор пакета и собственный профиль обеспечения развертывания, но когда я проверяю свой архив для хранилища приложений, я получаю следующую ошибку:

Invalid provisioning profile. The provisioning profile included in the bundle BUNDLE NAME [BUNDLE NAME.app] is invalid. For more information, visit the Mac OS Developer Portal.

Если я удалю хелперный пакет из моей основной цели, проблем нет. Похоже, что наличие другого профиля обеспечения задает ошибку.

Как я могу включить два подписанных пакета и передать проверку?

4b9b3361

Ответ 1

Наконец-то я смог решить эту проблему, используя codesign на компьютере колледжа (должно быть, что-то не так с моей Keychain) и удалив файл embedded.provisionprofile из вспомогательного приложения, добавив следующий запуск script

if [ -f "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile" ];
then
    rm "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile"
    echo "Removed embedded provisioning profile."
else
    echo "No profile found"
fi

Ответ 2

Вы должны использовать тот же сертификат производства Mac App Store, чтобы подписывать как вспомогательное приложение, так и основное приложение. Я не пробовал это в Xcode - у нас есть вспомогательное приложение, которое связано с ресурсом пакета, но наша подпись кода - это командная строка script. У нас не было проблем с системой хранения приложений.

Я не уверен, почему у вас заканчивается профиль подготовки в встроенном продукте, и я не думаю, что это требуется для представления магазина приложений. Вы можете использовать codesign вручную:

codesign -f -s "3rd Party Mac Developer Application: My Company" \
    -i "com.mycompany.loginitem" \
    --entitlements path/to/loginitem.entitlements" \
    path/to/appname.app/Contents/Library/LoginItems/loginitem.app

codesign -f -s "3rd Party Mac Developer Application: My Company" \
    -i "com.mycompany.appname" \
    --entitlements path/to/app.entitlements" \
    path/to/appname.app

Ответ 3

У меня была та же проблема. Вместо удаления embedded.provisionprofile из вспомогательного приложения я просто отключил выделение (профиль Provision: None), оставив идентификацию и права на подписание кода. Представлено мое приложение для просмотра без каких-либо проблем.