Linux は、Linux 以外のプラットフォームでホストされている拡張機能を Chrome ユーザーがインストールできる唯一のプラットフォームです。
Chrome ウェブストアこの記事では、crx
をパッケージ化、ホスト、更新する方法について説明します。
ウェブサーバーからファイルを読み取ることができます。拡張機能やテーマのみを配信する場合
Chrome ウェブストアからダウンロードする場合は、ウェブストアのホスティングと
更新中。
パッケージ
拡張機能とテーマは .crx
ファイルとして提供されます。Chrome Developer を使用してアップロードする場合
ダッシュボードの場合、crx
ファイルが自動的に作成されます。公開されている場合
個人用サーバーを使用する場合は、crx
ファイルをローカルに作成するか、Chrome からダウンロードする必要があります。
ウェブストア。
Chrome ウェブストアから .crx をダウンロードする
拡張機能が Chrome ウェブストアでホストされている場合、.crx
ファイルは
デベロッパー ダッシュボード[リスティング] で拡張機能を見つけます。[詳細]をクリックします
ポップアップ ウィンドウが表示されたら、青色の main.crx
リンクをクリックしてダウンロードします。
ダウンロードしたファイルは、個人用サーバーでホストできます。これが、アプリケーションをホストするための最も安全な 拡張機能のコンテンツは Chrome ウェブストアによって署名されるため、ローカルに保存する必要があります。この 潜在的な攻撃や改ざんの検出に役立ちます。
ローカルで .crx を作成する
拡張機能ディレクトリは、拡張機能の管理ページで .crx
ファイルに変換されます。次に移動:
アドレスバーで chrome://extensions/
キーを押すか、Chrome メニューをクリックして、[その他のツール] の上にポインタを置きます。次に
[拡張機能]を選択します
拡張機能の管理ページで、 デベロッパー モード。[PACK EXTENSION] ボタンを選択します。
[Extension root Directory] フィールドに拡張機能のフォルダのパスを入力し、[ [PACK EXTENSION] ボタン初回パッケージでは、[秘密鍵] フィールドを無視します。
.crx
ファイルと .pem
ファイルの 2 つが作成されます。このファイルには拡張機能の
されます。
秘密鍵を紛失しないように注意してください。.pem
ファイルを非公開の安全な場所に保管します。CANNOT TRANSLATE
拡張機能の更新に必要です。
.crx パッケージを更新する
manifest.json
のバージョン番号を増やして、拡張機能の .crx
ファイルを更新します。
{
...
"version": "1.5",
...
}
}
{
...
"version": "1.6",
...
}
}
拡張機能の管理ページに戻り、[拡張機能をパッケージ化] ボタンをクリックします。具体的な 拡張機能ディレクトリへのパスと秘密鍵の場所を指定します。
このページには、更新されたパッケージ化された拡張機能のパスが表示されます。
コマンドラインからパッケージ化する
コマンドラインで拡張機能をパッケージ化するには、chrome.exe
を呼び出します。--pack-extension
を使用する
拡張機能のフォルダの場所を指定するフラグと、--pack-extension-key
フラグを
拡張機能の秘密鍵ファイルの場所を指定します。
chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem
ホスト
.crx
ファイルをホストするサーバーでは、ユーザーがアプリをインストールできるように、適切な HTTP ヘッダーを使用する必要があります。
リンクからアクセスできます。
Google Chrome では、次のいずれかに該当する場合、ファイルはインストール可能と見なされます。
- ファイルのコンテンツ タイプが
application/x-chrome-extension
である。 - ファイルの接尾辞は
.crx
で、次の両方が当てはまります。 <ph type="x-smartling-placeholder">- </ph>
- ファイルが HTTP ヘッダー
X-Content-Type-Options: nosniff
で提供されていない - ファイルが次のいずれかのコンテンツ タイプで配信される。
- 空の文字列
"text/plain"
"application/octet-stream"
"unknown/unknown"
"application/unknown"
"\*/\*"
- ファイルが HTTP ヘッダー
インストール可能なファイルを認識できない最も一般的な原因は、サーバーが
ヘッダー X-Content-Type-Options: nosniff
。2 番目によくある理由は、サーバーがパケットを
不明なコンテンツ タイプ(上記のリストにないもの)が返されます。HTTP ヘッダーの問題を解決するには、
サーバーの構成を確認するか、.crx
ファイルを別のサーバーでホストしてみてください。
更新
ブラウザは数時間ごとに、インストールされている拡張機能の更新 URL を確認します。それぞれに対して、 リクエストをその URL に送信し、更新マニフェスト XML ファイルを探します。
- 更新チェックで返されるコンテンツは、更新マニフェストの XML ドキュメントであり、 できます。
アップデート マニフェストに、インストールされているバージョンよりも新しいバージョンが記述されている場合、ブラウザは
新しいバージョンがダウンロード、インストールされます。手動アップデートと同様に、新しい .crx
ファイルに署名する必要があります。
現在インストールされているバージョンと同じ秘密鍵でログインする。
URL を更新
Chrome ウェブストア以外のサーバーでホストされている拡張機能は、update_url
manifest.json
ファイルを開きます。
{
"name": "My extension",
...
"update_url": "https://myhost.com/mytestextension/updates.xml",
...
}
マニフェストを更新する
サーバーから返されるアップデート マニフェストは XML ドキュメントです。
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
<updatecheck codebase='https://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
</app>
</gupdate>
この XML 形式は、Google のアップデート インフラストラクチャである Omaha で使用されている形式に基づいています。「
拡張機能システムでは、<app>
<updatecheck>
アップデート マニフェスト:
- appid
- 拡張機能 ID は、公開鍵のハッシュに基づいて生成されます。詳細については、パッケージ化をご覧ください。拡張機能の ID は拡張機能の管理ページに表示されます。
- コードベース
.crx
ファイルへの HTTPS URL。- version
codebase
で指定された.crx
ファイルをダウンロードするかどうかを決定するためにクライアントによって使用されます。「version」の値と一致する必要があります。.crx
ファイルのmanifest.json
ファイルに指定します。
更新マニフェストの XML ファイルには、複数の拡張子を含め、複数の拡張機能に関する情報を含めることができます。
<app>
要素。
テスト
デフォルトのアップデート チェック頻度は数時間ですが、[Update 拡張機能の管理ページにあります。
これにより、インストールされているすべての拡張機能のチェックが開始されます。
高度な使用方法: リクエスト パラメータ
基本的な自動更新メカニズムは、サーバー サイドの作業が、コードを 静的 XML ファイルを Apache などのプレーン ウェブサーバーにアップロードし、その XML ファイルを新しい 拡張機能のバージョンがリリースされます。
複数の拡張機能をホストするデベロッパーは、拡張機能 ID を示すリクエスト パラメータを確認できます 更新リクエストで指定できます。これらのパラメータを含めると、 静的 XML ファイルの代わりに動的なサーバーサイド コードを実行する同じ URL。
リクエスト パラメータの形式は次のとおりです。
?x=EXTENSION_DATA
ここで、EXTENSION_DATA
は次の形式の URL エンコード文字列です。
id=EXTENSION_ID&v=EXTENSION_VERSION
たとえば、2 つの拡張機能が同じ更新 URL(https://test.com/extension_updates.php
)を参照しているとします。
- 拡張機能 1
<ph type="x-smartling-placeholder">
- </ph>
- ID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- バージョン: 「1.1」
- 拡張機能 2
<ph type="x-smartling-placeholder">
- </ph>
- ID: 「bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb」
- バージョン: 「0.4」
個々の拡張機能を更新するリクエストは次のようになります。
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
と
https://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
固有の更新 URL ごとに、1 回のリクエストに複数の拡張機能を指定できます。前の たとえば、ユーザーが両方の拡張機能をインストールしている場合、2 つのリクエストは 単一リクエスト:
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
同じ更新 URL を使用しているインストール済みの拡張機能の数が多く、GET リクエストに対応できる場合 URL が長すぎる(2,000 文字を超えている)場合、更新チェックで追加の GET リクエストが発行されます。 できます。
高度な使用方法: ブラウザの最小バージョン
拡張機能システムにより多くの API が追加されるにつれて、機能する拡張機能の更新版
新しいバージョンのブラウザのみがリリースされます。Google Chrome 自体は自動更新ですが、
ユーザーベースの大半が新しいリリースに更新されるまで数日かかることがあります。宛先
特定の更新が特定のバージョン以降の Google Chrome にのみ適用されるように
「prodversionmin」変数を属性をアップデート レスポンスの <app>
要素に追加します。
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
<updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' prodversionmin='3.0.193.0'/>
</app>
</gupdate>
これにより、ユーザーが Google Chrome を実行している場合にのみバージョン 2 に自動更新されるようになります。 3.0.193.0 以降