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

Как я могу создать пакет расширения Safari из командной строки?

Вместо перехода к Extension Builder > Build Package..., я хотел бы построить пакет .safariextz из папки MyExtension.safariextension.

Я знаю, что я могу распаковать расширение с помощью xar -xf. Я подозреваю, что путь назад включает в себя упаковку с помощью xar, но тогда мне нужно будет сделать код подписи, который может включать или не включать codeign (1 ).

4b9b3361

Ответ 1

Вот инструкции Omar Ismail, опустив необходимость в отдельных сценариях оболочки. Все это произойдет в каталоге safari/, где мы будем подписывать каталог safari/appname.safariextension/, чтобы стать расширением safari/appname.safariextz. Прежде всего нужно подписать расширение официальным способом с помощью Extension Builder Build Package.

Настроить Xar:
1. Загрузите и распакуйте/распакуйте https://github.com/downloads/mackyle/xar/xar-1.6.1.tar.gz в любом месте исполняемого файла xar-1.6.1 (xar 1.6dev не поддерживает параметры, которые нам нужны)
2. в xar-1.6.1/

./configure
make
sudo make install
sudo ln -s /full/path/to/xar-1.6.1/src/xar /usr/local/bin/xar161

Настройте свои сертификаты:
1. в сафари /

mkdir certs/
xar161 -f appname.safariextz --extract-certs certs/

2. откройте Keychain Access и экспортируйте сертификат разработчика Safari в safari/certs/certs.p12 (используйте пустой пароль для certs.p12, а затем используйте свой пароль Mac для экспорта сертификата)
3. в сафари/сертификаты/

openssl pkcs12 -in certs.p12 -nodes | openssl x509 -outform der -out cert.der
(same blank password)
openssl pkcs12 -in certs.p12 -nodes | openssl rsa -out key.pem
(same blank password)
openssl dgst -sign key.pem -binary < key.pem | wc -c > size.txt

Возможно, вы можете получить сертификаты от certs/cert.p12 и не нуждаться в шаге --extract-certs (и, следовательно, не нужно, чтобы расширение было построено официальным образом), но я не знаю openssl достаточно хорошо, и это только для установки, что вам нужен этот шаг в любом случае.

Как только все настроено, подписать расширение:
В сафари /

xar161 -czf appname.safariextz --distribution appname.safariextension/
xar161 --sign -f appname.safariextz --digestinfo-to-sign digest.dat --sig-size `cat certs/size.txt` --cert-loc certs/cert.der --cert-loc certs/cert01 --cert-loc certs/cert02
openssl rsautl -sign -inkey certs/key.pem -in digest.dat -out sig.dat
xar161 --inject-sig sig.dat -f appname.safariextz
rm -f sig.dat digest.dat

Все это было на MacBook Snow Leopard в 2006 году, поэтому на машине, которая обновляется, могут быть разные вещи.