2010-08-06 15 views
18

एक्सटेंशन बिल्डर> पैकेज बनाएं ... पर जाने के बजाय, मैं MyExtension.safariextension फ़ोल्डर से .safariextz पैकेज बनाना चाहता हूं।मैं कमांड लाइन से सफारी एक्सटेंशन पैकेज कैसे बना सकता हूं?

मुझे पता है कि मैं xar -xf के साथ एक एक्सटेंशन को अनपैक कर सकता हूं। मुझे संदेह है कि जिस तरह से इसे xar के साथ पैक करना शामिल है, लेकिन फिर मुझे कोड हस्ताक्षर करने की आवश्यकता होगी, जिसमें codesign(1) शामिल हो सकता है या नहीं।

+1

बुरी खबर? http://twitter.com/eridius/status/17227204729 – kch

+0

केएच ने इसे सिर पर खींचा। शायद किसी के पास एक हैक है जो काम करता है? – Caladain

उत्तर

4

ऐसा लगता है कि हस्ताक्षर विकल्प के साथ एक्सएआर पैच करने का कोई तरीका है। http://code.google.com/p/xar/issues/detail?id=76#c0

+0

अच्छा। आगे की जांच करेंगे। – kch

+1

उस धागे में कुछ लोग सफलता की रिपोर्ट कर रहे हैं! इस उम्र बढ़ने वाले धागे को अपडेट करने के लिए लगभग – jamiew

6

यहां ओमर इस्माइल के निर्देश हैं, अलग शैल स्क्रिप्ट की आवश्यकता को छोड़कर। यह सभी एक निर्देशिका safari/ में होगा, जहां हम एक्सटेंशन safari/appname.safariextz बनने के लिए निर्देशिका पर हस्ताक्षर करेंगे। पहली बात यह है कि एक्सटेंशन बिल्डर के Build Package के साथ आधिकारिक तरीके से विस्तार पर हस्ताक्षर करना है।

सेट करें Xar:
1. डाउनलोड करें और अनज़िप/अनटार https://github.com/downloads/mackyle/xar/xar-1.6.1.tar.gz भी आप निष्पादन योग्य xar-1.6.1 चाहते
xar में 2. (xar 1.6dev विकल्पों हम की जरूरत का समर्थन नहीं करता) को -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. खुली कीचेन एक्सेस और सफारी/कर्ट/certs.p12 पर अपने सफारी डेवलपर प्रमाणपत्र को निर्यात करें (certs.p12 के लिए रिक्त पासवर्ड का उपयोग करें, और फिर प्रमाण पत्र निर्यात करने के लिए अपने मैक के पासवर्ड का उपयोग करें)
3. सफारी/कर्ट/

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 काफी अच्छी तरह से पता नहीं है, और यह केवल है सेट अप के लिए आपको वैसे भी उस चरण की आवश्यकता है।

एक बार सब कुछ विस्तार पर हस्ताक्षर करने के लिए सेट है,:
सफारी में/

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 हिम तेंदुए मैकबुक पर सभी था, इसलिए यह संभव है चीजों को एक मशीन अधिक हो रहा है उस पर अलग हो सकता है तारीख तक।

+0

मैंने उपर्युक्त सबकुछ किया है, इस प्रक्रिया के दौरान कोई त्रुटि और चेतावनियां नहीं मिली हैं, लेकिन जब मैं safariextz आयात करने का प्रयास करता हूं तो मुझे त्रुटि मिलती है: सफारी इस एक्सटेंशन को इंस्टॉल नहीं कर सकता है, इस एक्सटेंशन को स्थापित करते समय एक त्रुटि हुई । कंसोल में मुझे com.apple मिलता है। वेबकिट (41523) फ़ाइल-रीड-डेटा/एप्प्लिकेशन्स/सफारी.एप से इनकार करते हैं। कोई विचार क्या समस्या है? –

+1

पता चला कि समस्या क्या थी। मैं - वितरण के लिए पूर्ण पथ का उपयोग कर रहा था इसलिए विस्तार पैकेज के अंदर मेरी बिल्ड निर्देशिका के लिए xar पैक पूर्ण पथ। Xar –

+0

गोरान रैडुलोविक के साथ संपीड़ित करते समय सापेक्ष पथ का उपयोग करें: मुझे एक ही त्रुटि मिल रही है, भले ही पथ ठीक है। त्रुटि देखने के लिए मैं कंसोल कैसे खोल सकता हूं? –

संबंधित मुद्दे