[英]Create .CRX (chrome extension / webapp ) file on demand using PHP
[英]Create Google Chrome Crx file with PHP
我希望能夠使用PHP生成crx文件。
一個crx文件是一個zip文件,帶有一個額外的標題,而且我對如何創建這個標題感到迷茫。 如果我使用預生成的pem文件,我可以創建一個crx文件,但這會導致所有crx文件具有相同的擴展ID,這不是很好。 這是迄今為止我所擁有的鏈接.....
http://valorsolo.com/index.php?page=Viewing%20Message&id=1472&pagenum=2#1500
它有助於在Python中完成這一點,並且有一篇關於精細細節的博客文章....
http://blog.roomanna.com/12-12-2010/packaging-chrome-extensions
並且有關於該主題的其他代碼的一些鏈接.....
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/
這個ruby代碼很有幫助。
你的公鑰必須是DER格式,不幸的是PHP的OpenSSL擴展不能這樣做,據我所知。 我必須在命令行從我的私鑰生成它:
openssl rsa -pubout -outform DER < extension_private_key.pem > extension_public_key.pub
更新 :有一個PHP der2pem()函數可以在這里找到 ,這要歸功於tutuDajuju指點出來。
完成后,構建.crx文件非常簡單:
# 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);
您可以使用有效的PHP解決方案: https : //github.com/andyps/crxbuild您可以在項目和命令行腳本中包含一個PHP類。
CRX格式在文檔頁面中有詳細描述: http : //code.google.com/chrome/extensions/crx.html
Ruby和Bash的文件末尾有一些例子。 遵循您的語言格式(PHP)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.