[英]How can I build a Safari extension package from the command line?
而不是去Extension Builder> Build Package ... ,我想从MyExtension.safariextension
文件夹中构建一个.safariextz
包。
我知道我可以使用xar -xf
解压扩展。 我怀疑后面的方法是用xar
打包它,但后来我需要做代码签名的事情,这可能涉及或可能不涉及协同设计(1) 。
以下是Omar Ismail的说明,省略了对单独的shell脚本的需求。 这将全部发生在目录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
设置证书:
在野生动物园
mkdir certs/
xar161 -f appname.safariextz --extract-certs certs/
2.打开Keychain Access并将Safari Developer证书导出到safari / certs / certs.p12(使用certs.p12的空白密码,然后使用Mac的密码导出证书)
3.在safari / certs /
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
获取证书,而不需要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
这完全出现在2006款Snow Leopard MacBook上,因此在更新的机器上可能会有所不同。
看起来有一种方法可以使用签名选项修补XAR。 http://code.google.com/p/xar/issues/detail?id=76#c0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.