インライン インストールのサポート終了と移行に関するよくある質問

2018 年 6 月 12 日現在、インライン インストールは非推奨になりました。詳しくは、Chromium のブログ投稿をご覧ください。

タイムラインに関する質問

2018 年 6 月 12 日に変更される内容

拡張機能やアプリなど、2018 年 6 月 12 日以降に公開された Chrome ウェブストアのアイテムでは、インライン インストールが無効になります。「無効」に設定すると、インライン インストールを試みたときに、ユーザーがインストールを完了できる Chrome ウェブストアのアイテムの詳細ページに自動的にリダイレクトされます。この日より前に最初に公開されたストア内の既存のアイテムについては、変更はありません。

2018-09-12 に変更はありますか?

今回の無効化は、公開日にかかわらずすべてのアイテムに適用されます。すべてのアイテムのインライン インストールが試行されると、ユーザーがインストールを完了できる Chrome ウェブストアにリダイレクトされます。

2018-09-12 の前に行うべきことはありますか?

何も変更する必要はありませんが、インストール フローを確認し、chrome.webstore.install() の呼び出しを、アイテムの Chrome ウェブストア掲載情報への直接のナビゲーションに置き換えることをおすすめします。これにより、最適なユーザー エクスペリエンスが生成されることを確認できます。

また、Chrome ウェブストアの新しいダウンロード バッジをサイトのインストール フローに組み込むこともおすすめします。

M71(2018 年 12 月)での変更点は何ですか?

M71 以降、Chrome では chrome.webstore.install() メソッドのサポートが終了し、その呼び出しは失敗し、サイトでのインストール フローが失敗します。この時点では、API を呼び出すと JavaScript TypeError がスローされます。この日より前に API メソッドへの呼び出しをすべて削除する必要があります。

インライン インストールを無効にした後

インストール フローはどのようなものか。

サイトで chrome.webstore.install() が呼び出されたとき、Chrome はすぐにダイアログを表示せず、代わりに Chrome ウェブストアの詳細ページに新しいフォアグラウンド タブを開きます(https://chrome.google.com/webstore/detail/EXTENSION_ID)。そのページから [インストール] をクリックすると、標準のインストール プロセスに進むことができ、権限を確認してインストールまたはキャンセルするようユーザーに促すダイアログが表示されます。ダイアログが閉じた後も、タブは Chrome ウェブストアに残ります。

インストールが正常に完了したかどうかを確認するにはどうすればよいですか?

chrome.webstore.install() を呼び出すと、ユーザーが Chrome ウェブストアにリダイレクトされたことを示すエラーとともに errorCallback がトリガーされます。インストールが成功したかどうかは示されません。Chrome 71 以降では chrome.webstore.install() の呼び出しが失敗するため、failureCallback は実行されません。

この API を使用しない場合は、拡張機能とウェブサイトの間の通信を通じて、アイテムがすでにインストールされているかどうかをサイトは検出できます。これは、拡張機能のメッセージとマニフェストの externally_connectable プロパティを使用して行うことができます。

"externally_connectable": {
  "matches": ["https://www.example.com/*"]
}
// JS running on https://example.com
try {
  chrome.runtime.sendMessage('EXTENSION_ID', MESSAGE, function() {
    if (chrome.runtime.lastError) {
      // Extension is not installed.
    }
  });
} catch (e) {
  // Extension is not installed.
}

次のように置き換えます。

  • EXTENSION_ID: 拡張機能の ID。
  • MESSAGE: 拡張機能に送信するメッセージ文字列またはオブジェクト。

インストール後に情報ページを表示するにはどうすればよいですか?

chrome.runtime イベントを使用して、インストール後に新しいタブを開きます。バックグラウンド ページで使用するコードの例を次に示します。

chrome.runtime.onInstalled.addListener(function listener(details) {
  if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
    chrome.tabs.create({url: "https://www.example.com/"});
    chrome.runtime.onInstalled.removeListener(listener);
  }
});

例外してもらえますか?

いいえ。このポリシーの変更は例外なく Chrome ウェブストアのすべてのアイテムに適用されます。