2010-08-06 31 views
18

Thay vì truy cập Trình tạo tiện ích mở rộng> Gói dựng ..., tôi muốn tạo gói .safariextz từ thư mục MyExtension.safariextension.Làm thế nào tôi có thể xây dựng một gói phần mở rộng Safari từ dòng lệnh?

Tôi biết tôi có thể giải nén tiện ích mở rộng với xar -xf. Tôi nghi ngờ cách trở lại liên quan đến việc đóng gói nó với xar, nhưng sau đó tôi sẽ cần phải làm điều ký mã, mà có thể hoặc có thể không liên quan đến codesign(1).

+1

tin xấu? http://twitter.com/eridius/status/17227204729 – kch

+0

Kch đóng đinh nó trên đầu. Có thể ai đó có hack hoạt động? – Caladain

Trả lời

6

Dưới đây là hướng dẫn của Omar Ismail, bỏ qua sự cần thiết của các tập lệnh shell riêng biệt. Tất cả điều này sẽ xảy ra trong một thư mục safari/, nơi chúng tôi sẽ ký vào thư mục safari/appname.safariextension/ để trở thành tiện ích mở rộng safari/appname.safariextz. Điều đầu tiên là đăng ký tiện ích theo cách chính thức, với số máy lẻ Build Package của Người xây dựng tiện ích mở rộng.

Thiết lập XAR:
1. Tải về và giải nén/giải nén https://github.com/downloads/mackyle/xar/xar-1.6.1.tar.gz đến bất cứ nơi nào bạn muốn thực thi XAR-1.6.1 (XAR 1.6dev không hỗ trợ các tùy chọn chúng ta cần)
2. trong 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 

Thiết lập giấy chứng nhận của bạn:
1. trong safari/

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

2. mở Keychain Truy cập và xuất chứng chỉ Safari Developer của bạn sang safari/certs/certs.p12 (sử dụng mật khẩu trống cho certs.p12, và sau đó sử dụng mật khẩu Mac của bạn để xuất chứng chỉ)
3. trong 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 

có thể là bạn có thể nhận được giấy chứng nhận từ certs/cert.p12, và không cần bước --extract-certs (và do đó không cần phần mở rộng được xây dựng cách chính thức), nhưng tôi không biết openssl cũng đủ, và nó chỉ cho các thiết lập mà bạn cần bước đó anyway.

Sau khi mọi thứ được thiết lập, ký phần mở rộng:
trong 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 

Đây là tất cả trên Snow Leopard MacBook năm 2006, do đó, nó có thể điều có thể khác nhau trên một máy đó là hơn lên cho đến nay.

+0

Tôi đã thực hiện mọi thứ ở trên, không có lỗi và cảnh báo trong quá trình này, nhưng khi tôi cố gắng nhập safariextz tôi gặp lỗi: Safari không thể cài đặt tiện ích này, Đã xảy ra lỗi khi cài đặt tiện ích mở rộng này . Trong giao diện điều khiển tôi nhận được com.apple.WebKit (41523) từ chối file-read-data /Applications/Safari.app. Bất kỳ ý tưởng gì là vấn đề? –

+1

Tìm ra vấn đề là gì. Tôi đã sử dụng đường dẫn tuyệt đối để - phân phối để xar đóng gói đường dẫn tuyệt đối để xây dựng thư mục của tôi bên trong gói phần mở rộng. Sử dụng đường dẫn tương đối khi nén với xar –

+0

Goran Radulovic: Tôi nhận được cùng một lỗi, ngay cả khi đường dẫn là ok. Làm thế nào tôi có thể mở giao diện điều khiển để xem lỗi? –

Các vấn đề liên quan