1

私は本当に基本的なChrome拡張機能を作成し、自動更新をテストするために単純なnode.jsサーバーをセットアップしました。サーバーは.crxファイルをホストしているので、にアクセスするだけで問題なく拡張機能をインストールできますlocalhost:3000/clients/chrome/extension.crx。しかし、に移動してtools->extensionsをクリックするUpdate extensions nowと、サーバーはリクエストを受信しません。私はクロムがGETすることを期待していましlocalhost:3000/clients/chrome/updates.xmlたが、これは起こっていません。私はここで何が間違っているのですか?


コード

これを再現可能にするためのコードについて説明します。

$ツリー

.
|-- clients
|   `-- chrome
|       |-- extension
|       |   `-- manifest.json
|       |-- extension.crx
|       |-- extension.pem
|       `-- updates.xml
`-- web.js

拡張子は実際には単なるマニフェストファイルです。

マニフェスト.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にアクセスして拡張機能をインストールします。この部分は、2回目の試行で正常に機能します。サーバーは両方の試行をログに記録します。

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"

次に、[ツール]-> [拡張機能]に移動し、をクリックしUpdate extensions nowます。chromeがupdates.xmlファイルを取得して、何かが変更されたかどうかを確認することを期待していますが、サーバーはリクエストをログに記録しません。

4

1 に答える 1

1

http://localhost:3000/clients/chrome/updates.xml代わりに試してください。

于 2012-04-27T00:57:34.163 に答える