2011-02-16 18 views
5

PHP ile bir crx dosyası oluşturabiliyorsunuz.PHP ile bir Google Chrome Crx dosyası oluşturun

Bir crx dosyası ek bir üstbilgiye sahip bir zip dosyasıdır ve bu üstbilginin nasıl oluşturulacağı konusunda bir kayıpta Im'dir. Önceden oluşturulmuş bir pem dosyası kullanırsam bir crx dosyası oluşturabilirim ancak bu aynı uzantı kimliğine sahip tüm crx dosyalarına yol açar ve bu iyi değildir. İşte Ive şimdiye kadar ne var bir link ..... bu Python yapılmıştır ve burada daha ince ayrıntılar üzerinde mükemmel bir blog yazısı var yardımcı olur Örtmek
http://valorsolo.com/index.php?page=Viewing%20Message&id=1472&pagenum=2#1500

....
http://blog.roomanna.com/12-12-2010/packaging-chrome-extensions
konuyla ilgili diğer koduna ve heres bazı linkler .....
http://code.google.com/chrome/extensions/crx.html
http://code.google.com/p/crx-packaging/source/browse/trunk/packer.py
https://github.com/bellbind/crxmake-python/blob/master/crxmake.py
http://www.curetheitch.com/projects/buildcrx/

cevap

2

CRX biçimi dokümanları sayfasındaki ayrıntılı olarak açıklanmıştır: http://code.google.com/chrome/extensions/crx.html

Ruby ve Bash için bu dosyanın ucunda örneği vardır. Dili kendi dilinizde takip edin (PHP).

+0

Bunu yapabilseydim yardım istemezdim;) Ama bu bağlantıyı yaptığınız için teşekkürler, bunu unutmuştum .... ve onu okudum (birçok kez). . – PAEz

3

Bu ruby code yararlı oldu.

Genel anahtarınız DER biçiminde olmalı ve ne yazık ki PHP'nin OpenSSL uzantısı bunu yapabildiğim kadar yapamaz. Ben komut satırına benim özel anahtarından bunu üretmek zorunda:

openssl rsa -pubout -outform DER <extension_private_key.pem> extension_public_key.pub 

UPDATE: it işaret için tutuDajuju için bir PHP der2pem() fonksiyonu available here, teşekkürler yoktur. https://github.com/andyps/crxbuild Eğer proje ve komut satırı Senaryoya dahil bir PHP sınıfı vardır :

# make a SHA1 signature using our private key 
$pk = openssl_pkey_get_private(file_get_contents('extension_private_key.pem')); 
openssl_sign(file_get_contents('extension.zip'), $signature, $pk, 'sha1'); 
openssl_free_key($pk); 

# decode the public key 
$key = base64_decode(file_get_contents('extension_public_key.pub')); 

# .crx package format: 
# 
# magic number    char(4) 
# crx format ver    byte(4) 
# pub key lenth    byte(4) 
# signature length   byte(4) 
# public key     string 
# signature     string 
# package contents, zipped string 
# 
# see http://code.google.com/chrome/extensions/crx.html 
# 
$fh = fopen('extension.crx', 'wb'); 
fwrite($fh, 'Cr24');        // extension file magic number 
fwrite($fh, pack('V', 2));      // crx format version 
fwrite($fh, pack('V', strlen($key)));   // public key length 
fwrite($fh, pack('V', strlen($signature)));  // signature length 
fwrite($fh, $key);        // public key 
fwrite($fh, $signature);       // signature 
fwrite($fh, file_get_contents('extension.zip')); // package contents, zipped 
fclose($fh); 
+0

Girişiniz için teşekkürler, ancak bu zaten çok şey yapabilirim. Bu sadece bir zip dosyası oluşturacaktır, ancak yukarıda belirttiğim gibi, tüm uzantılar, idealden uzak olan aynı uzantı kimliğine sahip olacaktır. Teşekkürler. – PAEz

+2

Bunun kötü bir şey olduğuna emin misin? Bildiri dosyasında bildirimler, güncellemeler bu kimliği kullanarak kontrol edilir. Kimlik her bir yapıda değiştiyse Chrome, uzantınızda hiçbir zaman güncelleme görmez. PHP'nin Open SSL işlevleri .pem formatını kullandığından, http://code.google.com/chrome/extensions/autoupdate.html –

+0

adresine bakın. .pem'den .der formatına veya visa versa dönüştürmek için bir işlev kullanabilirsiniz. Bakınız: http://www.php.net/manual/en/ref.openssl.php#74188. Ayrıca isterseniz, her yaratımda yeni bir anahtar oluşturabilir ve daha sonra benzersiz kimlikler alabilirsiniz. Daha sonra, anahtarları kaydedin, ortak anahtarın karmasını alın (bu ID olmalıdır) ve dinamik bir oluşturma ve güncelleme sistemi oluşturmak için her ikisini de depolayın. – tutuDajuju

2

Çalışmaya PHP çözümü kullanabilirsiniz: Bu işlem tamamlandıktan sonra

, .crx dosyayı bina oldukça kolaydır .

İlgili konular