而不是转到 Extension Builder>构建包...... ,我想从.safariextz
文件夹中构建一个MyExtension.safariextension
包。
我知道我可以使用xar -xf
解包扩展程序。我怀疑返回的方法是用xar
打包它,但后来我需要做代码签名的事情,这可能涉及codesign(1),也可能不涉及。{/ p>
答案 0 :(得分:6)
以下是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
设置证书:
1.在safari /
mkdir certs/
xar161 -f appname.safariextz --extract-certs certs/
2。打开Keychain访问并将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
获取证书,而不需要--extract-certs
步骤(因此不需要以官方方式构建扩展名),但我不太了解openssl ,无论如何,它只适用于您需要该步骤的设置。
设置好所有内容后,签署扩展名:
在safari /
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上,因此在更新的机器上可能会有所不同。
答案 1 :(得分:4)
看起来有一种方法可以使用签名选项修补CAR。 http://code.google.com/p/xar/issues/detail?id=76#c0