繁体   English   中英

如何从命令行构建Safari扩展包?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM