UPDATE:解决了其中的一部分,而不是其他为什么我的打包Chrome扩展没有更新?
我有CRX现在更新(这不是重建)。
但是,Chrome将不接受https或URL中的XML或CRX。
我相信#2是因为它是一个自签名证书。有谁知道是否有解决方法? (这纯粹是为了发展,所以内部托管)
原贴:
我创建了一个打包的扩展,是在我的内部网站托管,但添加通过从桌面拖动到Chrome(因为Chrome将不允许通过外部网站安装打包的扩展程序 - 请参阅此处:After adding ExtensionInstallSources preference with my URL to Chrome Preferences, still won't allow installing ".crx" packaged app)。
清单将update_url
设置为位于我网站上的XML文件。该XML文件具有在updatecheck codebase='...'
下设置的crx文件的url。这两个文件都存在于网站上,并且可以找到。我还在XML文件和manifest.json
中修改了2.0.0.2
到2.0.0.2
的版本号。我还对扩展的index.html文件进行了更改。
我检查了appid
,它在XML文件和Chrome中是一样的。
尽管单击“更新扩展名”按钮约50次,并等待10分钟,但它不会更新。
注:我做了别名,其中网站托管在我的hosts文件,myinternal.fake
内部IP,但192.168.1.108这个工作在两个Chrome和Firefox,所以我不认为这是个问题
更新XML文件(位于:https://myinternal.fake/updates/helloworld.xml)
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='akchdaojnpiglpjeiamjpacbkppcgbgj'>
<updatecheck codebase='https://myinternal.fake/helloworld.crx' version='2.0.0.2' prodversionmin='23' />
</app>
</gupdate>
manifest.json的
{
"manifest_version": 2,
"name": "Hello World",
"version": "2.0.0.2",
"minimum_chrome_version": "23",
"update_url": "https://myinternal.fake/updates/helloworld.xml",
"icons":
{
"16": "icon_16.png",
"128": "icon_128.png"
},
"app":
{
"background":
{
"scripts":
[
"main.js"
]
}
}
}
编辑:我也检查和头是一个可接受的铬(根据这个:http://developer.chrome.com/dev/extensions/hosting.html)。它将CRX文件作为“text/plain”发送,并且不发送标头X-Content-Type-Options: nosniff
,因此它应该是有效的。
此外,当我从https
更改为http
时,现在当我点击“立即更新扩展名”时,扩展消失了一秒钟,表明它正在读取XML,但仍然不接受更新!