3

UPDATE:解决了其中的一部分,而不是其他为什么我的打包Chrome扩展没有更新?

  1. 我有CRX现在更新(这不是重建)。

  2. 但是,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.22.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,但仍然不接受更新!

回答

3

问题在于自签名证书和Chrome。 Chrome不接受自动签名证书的扩展更新,除非他们是“被接受”的权限。这些步骤将使其工作:

  1. 遵循以下步骤:https://stackoverflow.com/a/15076602/857025导出证书,然后导入它作为一个权威

  2. ,关闭Chrome

  3. 重新启动Chrome,

  4. 关闭扩展窗口如果打开

  5. 通过“chrome :// extensions“,然后单击”立即更新扩展名“

然后它应该更新位于自签名https连接上的扩展名。

UPDATE这不是一个完美的解决方案,因为Chrome在接受自签名证书方面看起来有些不可靠。它随机停止看到更新。如果我切换回使用常规http(update_url和CRX的url),每次都会发生更新。

我查了一下,我的证书仍然是一个值得信赖的权威,但Chrome浏览器突然停止识别更新,所以必须有一个问题。

相关问题