Chrome ウェブストア以外でホストされている拡張機能は、Linux ユーザーのみがインストールできます。この
この記事では、個人用サーバーから .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"
- 「不明」
- 「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」変数を属性を
<?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 以降