Linux への拡張機能のインストール

Chrome ウェブストア以外でホストされている拡張機能は、Linux ユーザーのみがインストールできます。この この記事では、個人用サーバーから .crx ファイルをパッケージ化、ホスト、更新する方法について説明します。条件 拡張機能やテーマをChrome ウェブストアのみを通じて配布する場合は、ウェブストアをご覧ください ホストと更新をご覧ください。

パッケージング

拡張機能とテーマは .crx ファイルとして提供されます。Chrome Developer を使用してアップロードする場合 ダッシュボードの場合、.crx ファイルが自動的に作成されます。個人 .crx ファイルをローカルに作成するか、Chrome ウェブストアからダウンロードする必要があります。

Chrome ウェブストアから .crx をダウンロードする

拡張機能が Chrome ウェブストアでホストされている場合、.crx ファイルは デベロッパー ダッシュボード[リスティング] で拡張機能を見つけます。[詳細]をクリックします ポップアップ ウィンドウが表示されたら、青色の main.crx リンクをクリックしてダウンロードします。

デベロッパー ダッシュボードから .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」
    • &quot;application/octet-stream&quot;
    • 「不明」
    • 「application/unknown」
    • 「*/*」

インストール可能なファイルを認識できない最も一般的な原因は、サーバーが ヘッダー X-Content-Type-Options: nosniff。2 番目によくある理由は、サーバーがパケットを 不明なコンテンツ タイプ(上記のリストにないもの)が返されます。HTTP ヘッダーの問題を解決するには、 サーバーの構成を確認するか、.crx ファイルを別のサーバーでホストしてみてください。

更新中

ブラウザは数時間ごとに、インストールされている拡張機能の更新 URL を確認します。それぞれに対して、 リクエストをその URL に送信し、更新マニフェスト XML ファイルを探します。

  • 更新チェックで返されるコンテンツは、更新マニフェストの XML ドキュメントであり、 できます。

アップデート マニフェストに、インストールされているバージョンよりも新しいバージョンが記述されている場合、ブラウザは 新しいバージョンがダウンロード、インストールされます。手動アップデートと同様に、新しい .crx ファイルに署名する必要があります。 現在インストールされているバージョンと同じ秘密鍵でログインする。

注: ユーザーのプライバシーを保護するため、Google Chrome は自動更新マニフェスト リクエストで Cookie ヘッダーを送信せず、これらのリクエストに対するレスポンスの Set-Cookie ヘッダーをすべて無視します。

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。
versioncodebase で指定された .crx ファイルをダウンロードするかどうかを決定するためにクライアントによって使用されます。「version」の値と一致する必要があります。.crx ファイルの manifest.json ファイルに指定します。

更新マニフェストの XML ファイルには、複数の拡張子を含め、複数の拡張機能に関する情報を含めることができます。 &lt;app&gt;あります。

テスト

デフォルトのアップデート チェック頻度は数時間ですが、[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 以降