Chrome拡張機能を作ってみよう(補足

[前回](https://qiita.com/andkirato/items/0f766c2586e866a005df)まではChrome拡張機能の作成についてでしたが
今回は補足としてインストールについてです。

## Chrome拡張機能のインストール

###chrome store###
個人で使うだけならばデベロッパーモードで良いと思いますが、複数人で使うとなると
毎回ソースを渡してデベロッパーモードで入れて・・・なんてのが面倒になります。

そこで[chrome store](https://chrome.google.com/webstore/category/extensions?hl=ja)に登録してアドレスを教える方法です。
使っている機能によっては、審査とかいろいろ面倒な部分もあり、時間もかかりますが
一度登録してしまえばあとは簡単です。

[chrome store](https://chrome.google.com/webstore/category/extensions?hl=ja)での公開方法については以下が参考になるかと思います。
https://support.google.com/chrome/a/answer/2714278?hl=ja

※グループ公開のみ登録料がかかるとなっていますが、現在は[chrome store](https://chrome.google.com/webstore/category/extensions?hl=ja)に登録するのに登録料がかかります。

###crxファイルからインストール###
※現在、この方法は出来ません。
まず、crxファイルを作成します。
chrome://extensions/にアクセスしてデベロッパーモードになっていることを確認する。
__拡張機能をパッケージ化__から今回作成した拡張機能のフォルダを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123857/0d13e223-df11-1c61-0539-cf6ec6e51199.png)
初回であれば秘密鍵ファイルは指定なしで問題ないです。
アップデート等の場合は指定が必要です。
（秘密鍵ファイルが変わると拡張機能IDが変わります）

__拡張機能をパッケージ化__で「extensions.crx」と「extensions.pem」のファイルが作成されます。
pemファイルは保管してください。

前はcrxファイルをchromeブラウザにドラックアンドドロップでインストールできましたが
現在はインストールできません。

###ポリシーを設定してインストール###
では、[chrome store](https://chrome.google.com/webstore/category/extensions?hl=ja)に登録しないとインストールできないのかというとそうでもありません。
AD（Active Directory）に参加していることが条件ですが
crxファイルをインストールすることは可能です。

[こちら](https://support.google.com/chrome/a/answer/7532015?hl=ja#zippy=%2C%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB-%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E8%87%AA%E5%8B%95%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E8%A8%B1%E5%8F%AF%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B)に記載がありますが
>Chrome ウェブストアにないアプリや拡張機能を自動インストールするには、Microsoft® Active Directory® を使用するドメインにパソコンを参加させる必要があります。

とのことで実際にやってみます。
と言っても個人のPCはADに参加していないので今回は[aws](https://aws.amazon.com/jp/console/)の無料枠を使ってAD環境を構築しています。

必要な環境は
DC（Domain Controller）、Webサーバー、クライアント（インストールするPC）です。
（ADの構築については割愛します）

まず、crxをwebサーバーに配置します。

http://xxx.xxx.xxx.xxx/crx/extensions.crx

次にインストール用のxmlファイルを作ります。

```update.xml
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='jaffchbndhdmfpcloegdijfnoehbigha'>
    <updatecheck codebase='http://xxx.xxx.xxx.xxx/crx/extensions.crx' version='1.0' />
  </app>
</gupdate>
```

appidには拡張機能IDを記載しますが、デベロッパーモードで読み込んだIDとcrxでインストールした時のIDが変わります。
今回は、crxでのインストールが目的のためcrxファイルでインストールした時のIDが必要です。

（私は）ハマったのでID取得の手順を書いておきます。

chrome://extensions/にアクセスしてデベロッパーモードになっていることを確認する。
更新（F5）する。
画面にcrxファイルをドラックアンドドロップする。
これだけなのですが、更新を忘れると、あれ？ってなります。

このような表示になりますのでIDをコピーしてappidに貼り付けます。
![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123857/7c9e0be1-96f5-c43b-9ea9-f90fb82b8f79.png)

update.xmlとcrxファイルをWebサーバーに配置します。
http://xxx.xxx.xxx.xxx/crx/update.xml
http://xxx.xxx.xxx.xxx/crx/extensions.crx

####レジストリに登録####
インストール方法については以下に記載があります。
https://support.google.com/chrome/a/answer/7532015?hl=ja

インストールする方法はいろいろありますが、
今回は「ExtensionInstallForcelist」を使ってインストールしていきます。

本来であればDCでグループを作ってマシーンに対してレジストリを登録して・・・
とするところなのですがADに参加していれば手動でレジストリを登録してもインストールは可能なので
今回は手動で入れます。

以下のキーを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist

作成したキーに文字列値を作成します。
名前は特になんでも良いかと思います。
値のデータは
[Chrome拡張機能ID];[update.xmlのパス]
になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123857/daa6fd82-2e29-a097-1a9d-e69264e1dc3f.png)

ポリシーを確認するため「chrome://policy」にアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123857/76a7e45a-6246-9cfa-0a60-d028f91a41ed.png)

このように設定されていることを確認したらChromeを再起動します。

「chrome://extensions/」にアクセスして拡張機能がインストールされていれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123857/69b029ad-f8a5-51dc-5e03-861ac4a26a0a.png)

今回は手動でレジストリの値を設定したので、DCからレジストリの値を変更すると上書きされます。

Chrome拡張機能作成については以上です。