我不想去Extension Builder>构建软件包…,而是想从.safariextz文件夹构建一个MyExtension.safariextension软件包。

我知道我可以使用xar -xf打开扩展包。我怀疑返回的方式包括将其与xar打包在一起,但随后我需要进行代码签名,这可能涉及或可能不涉及codesign(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


设置您的证书:
1.在野生动物园/

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


2.打开“钥匙串访问”,然后将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,并且仅适用于set仍然需要采取这一步骤。

一切设置完成后,对扩展名进行签名:
在野生动物园/

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上完成的,因此在更新的计算机上可能会有所不同。

07-26 07:34