我想以编程方式创建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