为什么我的打包镀铬扩展程序没有更新?

时间:2013-06-04 22:49:13

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

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

  1. 我现在正在更新CRX(它没有重建)。

  2. ,Chrome不会通过https网址接受XML或CRX。

  3. 我相信#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文件和2.0.0.2中将版本号从2.0.0.2更新为manifest.json。我还对扩展名的index.html文件进行了更改。

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

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

    注意:我做了内部ip 192.168.1.108的别名,其中该站点作为myinternal.fake托管在我的主机文件中,但这适用于chrome和firefox,因此我不认为这是问题< / em>的

    更新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"
                ]
            }
        }
    }
    

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

    此外,当我从https更改为http时,现在当我点击“立即更新扩展程序”时,扩展程序会暂时消失,表示它现在正在读取XML,但仍然不接受更新!

2 个答案:

答案 0 :(得分:3)

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

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

  2. 关闭Chrome

  3. 重新启动Chrome

  4. 如果已打开,则关闭扩展程序窗口

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

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

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

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

答案 1 :(得分:1)

Google停止支持更新Chrome网站外部托管的扩展程序:http://blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html