Установщик Mac для подписи (pkgmaker)

Мой установщик создан с использованием PackageMaker. После этого я установил код установщика с помощью следующей команды.

productsign - знак 'Blah, Inc.' Install.mpkg/ CS/Install.mpkg

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

pkgutil --check-signature Install.mpkg

Так как сертификат установлен в моей системе в связке ключей, установщик, кажется, показывает небольшую блокировку в верхнем правом углу. Нажатие на это открывает сертификат.

Если установщик помещен в систему без установленного сертификата, блокировка больше не видна. Однако я все еще мог запустить команду, чтобы проверить сертификат.

1) Есть ли графический способ проверки подписи кода перед установкой? (Я не хочу запускать командную строку)

2) Я удалил папку из файла mpkg с помощью поиска, чтобы увидеть, будет ли установщик жаловаться на подделку. Но этого не происходит. Есть ли способ, которым установщик может остановить установку, если она была подделана?

3) Я также кодировал подписанные все двоичные файлы в моем пакете (в основном, демоны), используя опцию xcode для использования сертификата. Я снова вижу двоичный файл как подписанный, однако я получаю сообщение ядра [0]: ПОДПИСАНИЕ КОДА: cs_invalid_page(0x1000): p=224[MyDaemon], очищающее CS_VALID.

Погуглив, я нашел http://feedback.photoshop.com/photoshop_family/topics/photoshop_13_0_4_x64_how_can_i_get_rid_of_the_could_not_complete_your_request_because_of_a. Однако мне все еще не очень ясно, к чему они стремятся. Может ли кто-нибудь помочь мне?

2 ответа

Решение

Вы можете подписать только flat packages, Ваш пакет имеет расширение.mpkg, которое, я считаю, является старым форматом пакета. Убедитесь, что вы используете плоские пакеты, если хотите подписать их.

Вы можете подписать.mpkg пакеты, но вы должны подписать его с Developer ID Application сертификат, а не Developer ID Installer засвидетельствовано

Когда вы подписываете .mpkg Вы получаете номер с предупреждением о том, что внутренние пакеты должны быть подписаны, но подпись, кажется, действительна с или без внутреннего .pkg подписан.

Я проверил, что изменение внутреннего.pkg приводит к тому, что.mpkg не проходит проверку гейткипераСломанный установщик

Таким образом, для каждого внутреннего файла.pkg вы должны:

sudo productsign --sign "<Developer ID Installer: Cert>" "<source.mpkg>/Contents/Packages/<source.pkg>" "<destination.mpkg>/Contents/Packages/<source.pkg>"

тогда для.mpkg сделайте:

sudo productsign --sign "<Developer ID Application: Cert>" "<Source .mpkg>" "<Destination .mpkg>"
Другие вопросы по тегам