Как собрать пакет расширений Safari из командной строки? - PullRequest
19 голосов
/ 06 августа 2010

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

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

Ответы [ 2 ]

6 голосов
/ 03 декабря 2013

Вот инструкции Омара Исмаила, исключающие необходимость в отдельных скриптах оболочки. Все это произойдет в каталоге safari/, где мы будем подписывать каталог safari/appname.safariextension/, чтобы стать расширением safari/appname.safariextz. Первым делом нужно подписать расширение официальным способом с помощью Extension Builder's 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. Откройте связку ключей. Получите доступ и экспортируйте свой сертификат разработчика 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 года, поэтому вполне возможно, что на компьютере, который более современен, все может быть по-другому.

4 голосов
/ 28 августа 2010

Похоже, есть способ исправить XAR с помощью опции подписи.http://code.google.com/p/xar/issues/detail?id=76#c0

...