我想以編程方式創建chrome擴展crx文件(不使用chrome.exe,因爲它會打開新的chrome窗口)。那麼對於相同的選擇有哪些?我的首選是java,但如果它可能在其他語言,那麼我也沒關係。如何以編程方式創建chrome crx文件(最好在java中)?
回答
有多種用途要做到這一點,在各種語言(儘管,他們大多是殼/腳本語言)
我不能發佈的鏈接,所有的人,因爲我是一個新的計算器用戶 - 我只能發佈1個鏈接,所以我創建了一個列出它們的頁面 - 包括我在下面提到的一個C頁面 - http://curetheitch.com/projects/buildcrx/6/
無論如何,我花了幾個小時在C上運行一個版本,該版本在Windows或Linux,因爲其他解決方案需要安裝腳本語言或shell(即python,ruby,bash等)和OpenSSL。我寫的實用程序有靜態鏈接的OpenSSL,所以沒有解釋器或庫的需求。
存儲庫託管在github上,但上面的鏈接列出了我的實用程序和其他人員解決方案。
沒有列出Java,這是您的偏好,但希望這有助於!
正是我在找什麼。謝謝。 – 2011-08-14 21:54:57
我知道這是舊的,但是這對我幫助很大! – hawkfalcon 2012-05-13 00:42:14
你可以更新你的答案與實際的鏈接看你不再是一個新的用戶? – 2013-08-22 16:09:35
正如kylehuff所述,您可以使用外部工具。但你可以使用谷歌瀏覽器的命令行來執行跨平臺的操作(Linux/Windows/Mac)。
chrome.exe --pack-extension=[extension_path] --pack-extension-key=[extension_key]
--pack擴展是:
包從給定目錄的擴展,一個的.crx安裝文件。
--pack擴展鍵是:
可選PEM私鑰簽署打包的.crx使用。
以上不運行谷歌Chrome瀏覽器,它只是使用內部使用Chromium核心crx算法的命令行打包。
//Method to generate .crx. signature
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.Signature;
//@param : extenstionContents is your zip file ,
//@returns : byte[] of the signature , use ByteBuffer to merge them and you have your
// .crx
public static byte[] generateCrxHeader(byte[] extensionContents) throws Exception {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
SecureRandom random = new SecureRandom();
keyGen.initialize(1024, random);
KeyPair pair = keyGen.generateKeyPair();
Signature sigInstance = Signature.getInstance("SHA1withRSA");
sigInstance.initSign(pair.getPrivate());
sigInstance.update(extensionContents);
byte [] signature = sigInstance.sign();
byte [] subjectPublicKeyInfo = pair.getPublic().getEncoded();
final int headerLength = 4 + 4 + 4 + 4 + subjectPublicKeyInfo.length + signature.length;
ByteBuffer headerBuf = ByteBuffer.allocate(headerLength);
headerBuf.order(ByteOrder.LITTLE_ENDIAN);
headerBuf.put(new byte[]{0x43,0x72,0x32,0x34}); // Magic number
headerBuf.putInt(2); // Version
headerBuf.putInt(subjectPublicKeyInfo.length); // public key length
headerBuf.putInt(signature.length); // signature length
headerBuf.put(subjectPublicKeyInfo);
headerBuf.put(signature);
final byte [] header = headerBuf.array();
return header;
}
我認爲簽名和公鑰是crx可選的,但不是。這對我的解決方案而言是一個難題。 – 2016-11-04 17:04:44
- 1. 使用PHP創建Google Chrome Crx文件
- 2. 如何以編程方式在iphone中創建csv文件?
- 3. 如何以編程方式創建TextView?
- 4. 以編程方式創建ZIP文件
- 5. 以編程方式創建.pfx文件
- 6. 以編程方式創建designer.cs文件
- 7. 以編程方式在C#中創建KMZ文件KML文件
- 8. 如何以編程方式在Google文檔中創建文檔?
- 9. 如何以編程方式創建UIScrollview
- 10. 如何在iOS上以編程方式創建.txt文件
- 11. 如何以編程方式在Sharepoint站點創建文件夾
- 12. 如何以編程方式創建NSSearchField?
- 13. 如何以編程方式創建GPO?
- 14. 如何以編程方式創建UIScrollView?
- 15. 如何以編程方式創建Tabbar
- 16. 如何以編程方式創建UIViewController?
- 17. 如何以編程方式創建CustomCell?
- 18. 如何以編程方式創建UIButton
- 19. 如何以編程方式創建NSFetchedPropertyDescription?
- 20. 如何以編程方式創建NSTextField?
- 21. 如何以編程方式創建ProgressBar?
- 22. 如何以編程方式創建NSPopover
- 23. 如何以編程方式創建KMZ文件?
- 24. 如何以編程方式創建佈局文件
- 25. 如何以編程方式創建NDepend項目文件?
- 26. 如何以編程方式從PDF文件創建PDF書籤?
- 27. 如何以編程方式創建基本的Adobe Illustrator文件?
- 28. 如何以編程方式創建.ics文件?
- 29. 如何以編程方式創建vcf文件?
- 30. .crx文件安裝在chrome中
我也有類似的問題,這裏是解決方案: http://stackoverflow.com/questions/24661167/generating-chrome-packaged-app-crx-header-with-java/24675290 #24675290 – JavaHead 2014-07-11 03:30:02