2010-08-06 20 views
18

而不是去擴展生成器>構建包...,我想從MyExtension.safariextension文件夾內建一個.safariextz包。如何從命令行構建Safari擴展包?

我知道我可以用xar -xf解壓擴展名。我懷疑回程涉及與xar包裝它,但然後我需要做代碼簽名的事情,這可能涉及或可能不涉及codesign(1)

+1

壞消息? http://twitter.com/eridius/status/17227204729 – kch 2010-08-06 12:15:27

+0

Kch將它釘在頭上。也許有人有黑客行之有效? – Caladain 2010-08-16 17:15:57

回答

6

以下是Omar Ismail的說明,省略了單獨的shell腳本。這將全部出現在目錄safari/中,我們將在此處簽署目錄safari/appname.safariextension/以成爲擴展safari/appname.safariextz。第一件事是用擴展生成器的Build Package以官方方式簽署擴展名。

設置西拉:
1.下載並解壓縮/解壓 https://github.com/downloads/mackyle/xar/xar-1.6.1.tar.gz 無論你想要的可執行XAR-1.6.1(XAR 1.6dev不支持我們所需要的選項)在XAR
2 -1.6.1/

./configure 
make 
sudo make install 
sudo ln -s /full/path/to/xar-1.6.1/src/xar /usr/local/bin/xar161 

設置您的證書:在Safari
1/

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

2.打開鑰匙串訪問並將Safari開發者證書導出到safari/certs/certs.p12(對certs.p12使用空白密碼,然後使用Mac的密碼導出證書)
3. in 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年雪豹的MacBook,因此有可能的事情可能是不同的機器更高達上至今。

+0

我已經做了上述所有,在這個過程中沒有錯誤和警告,但是當我嘗試導入safariextz我得到錯誤:Safari無法安裝此擴展,安裝此擴展時出錯。在控制檯中,我得到com.apple.WebKit(41523)拒絕文件讀取數據/應用/Safari.app。任何想法是什麼問題? – 2013-12-05 02:00:02

+1

找出問題所在。我正在使用絕對路徑--distribution,所以xar打包絕對路徑到擴展包內的build目錄。使用xar壓縮時使用相對路徑 – 2013-12-05 03:59:56

+0

Goran Radulovic:即使路徑正常,我也會得到相同的錯誤。我如何打開控制檯查看錯誤? – 2014-06-26 11:40:37