Установщик 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>"