我做了一个非常基本的chrome扩展,并设置了一个简单的node.js服务器来测试自动更新。服务器托管.crx文件,这样我只需访问localhost:3000/clients/chrome/extension.crx
就可以毫无困难地安装扩展程序。但是当我转到tools->extensions
并单击Update extensions now
时,服务器不会收到请求。我原本期望镀铬到GET localhost:3000/clients/chrome/updates.xml
,但这种情况并没有发生。我在这里做错了什么?
CODE
让我告诉您完成代码以使其可重现:
$ tree
.
|-- clients
| `-- chrome
| |-- extension
| | `-- manifest.json
| |-- extension.crx
| |-- extension.pem
| `-- updates.xml
`-- web.js
扩展程序实际上只是一个清单文件。
的manifest.json
{
"name": "testing auto-updates",
"version": "1.0",
"update_url": "localhost:3000/clients/chrome/updates.xml",
"description": "Version 1.0"
}
如您所见,我指的是update_url以使自动更新成为可能。
updates.xml
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='fkphbmkcjefhhnnlhhjlnkellidponel'>
<updatecheck codebase='localhost:3000/clients/chrome/extension.crx' version='1.0' />
</app>
</gupdate>
打包扩展程序会创建 extension.crx 和 extension.pem 。
我还制作了一个简单的node.js服务器来提供文件:
web.js
var express = require('express');
var app = express.createServer(express.logger());
/* ROUTES */
app.get('/clients/chrome/extension.crx', function(request, response)
{
response.contentType('application/x-chrome-extension');
response.sendfile('clients/chrome/extension.crx');
});
app.get('/clients/chrome/updates.xml', function(request, response)
{
response.sendfile('clients/chrome/updates.xml');
});
/* ROUTES END */
var port = process.env.PORT || 3000;
app.listen(port, function() {
console.log("Listening on " + port);
});
好的,我们来测试一下。首先,启动服务器: $ node web.js
Listening on 3000
访问localhost:3000 / clients / chrome / extension.crx安装扩展程序。这部分在第二次尝试时工作正常。服务器记录两次尝试:
127.0.0.1 - - [Thu, 26 Apr 2012 22:22:50 GMT] "GET /clients/chrome/extension.crx HTTP/1.1" 200 596 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/11.10 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19"
127.0.0.1 - - [Thu, 26 Apr 2012 22:25:47 GMT] "GET /clients/chrome/extension.crx HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/11.10 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19"
接下来,我转到工具 - &gt;扩展程序,然后点击Update extensions now
。我期待chrome获取updates.xml文件以查看是否有任何更改,但服务器不记录任何请求。
答案 0 :(得分:1)
请尝试http://localhost:3000/clients/chrome/updates.xml
。