【问题标题】:Why is my packaged chrome extension not updating?为什么我打包的 chrome 扩展没有更新?
【发布时间】:2013-05-31 11:51:03
【问题描述】:

更新:解决了一部分,但没有解决其他

  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.2 更新为 2.0.0.2。我还对扩展的 index.html 文件进行了更改。

我检查了appid,它在 XML 文件和 Chrome 中是一样的。

尽管点击“立即更新扩展”按钮大约 50 次,并等待 10 分钟,但它并没有更新。

注意:我确实将内部 ip 192.168.1.108 别名为myinternal.fake,该网站托管在我的主机文件中,但这适用于 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>

ma​​nifest.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"
            ]
        }
    }
}

编辑:我还检查了标题是 Chrome 可接受的标题(据此:http://developer.chrome.com/dev/extensions/hosting.html)。它将 CRX 文件作为“文本/纯文本”发送,并且不发送标头 X-Content-Type-Options: nosniff,因此它应该是有效的。

另外,当我从https 更改为http 时,现在当我单击“立即更新扩展”时,扩展会消失一瞬间,这表明它现在正在读取 XML,但仍然不接受更新!

【问题讨论】:

  • 您的代码只是更新还是安装了您的 chrome 扩展程序?我可以在我的服务器控制台中看到获取请求,但它没有安装?
  • @BarisLaPaz 如果有问题,您应该发布自己的问题。这篇文章是 4 年前的,从那时起 Chrome 已经改变了很多 chrome 扩展的规则和架构

标签: google-chrome web-applications google-chrome-extension browser-extension google-chrome-app


【解决方案1】:

问题在于自签名证书和 Chrome。 Chrome 不接受扩展更新形式的自签名证书,除非它们是“接受”的授权机构。这些步骤将使它起作用:

  1. 按照以下步骤:https://stackoverflow.com/a/15076602/857025 导出您的证书,然后将其作为授权导入

  2. 关闭 Chrome

  3. 重启 Chrome

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

  5. 通过“chrome://extensions”重新打开,然后点击“立即更新扩展”

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

更新这不是一个完美的解决方案,因为 Chrome 在接受自签名证书方面似乎有点不稳定。它随机停止查看更新。如果我切换回使用常规 http(对于 update_url 和 CRX 的 url),每次都会发生更新。

我检查了一下,我的证书仍然是受信任的权威,但 Chrome 突然停止识别更新,所以这肯定有问题。

【讨论】:

    【解决方案2】:

    顺便说一句,Google 停止支持更新托管在 Chrome Webstore 之外的扩展程序:http://blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2020-12-14
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多