ScoopをQiitaにも公式にもWikiにも書いてなかったのでChocolateyの様にcmd.exeでインストールしてみた

# ～Scoop を [Qiita](https://qiita.com/tags/scoop) にも [公式](https://scoop.sh/) にも [Wiki](https://github.com/lukesampson/scoop/wiki/Quick-Start) にも書いてなかったので [Chocolatey](https://chocolatey.org/docs/installation#install-with-cmdexe) の様に `cmd.exe` でインストールしてみた～の紹介

## ~~拝啓~~背景
1. とある [ツール](https://github.com/oldj/SwitchHosts#scoop) をインストールしようと思ったらパッケージマネージャーが `choco` ではなく `scoop` だったので試しに導入してみようとインストール情報を検索してみた

2. どこを探しても [PowerShell](https://docs.microsoft.com/ja-jp/powershell/scripting/overview?view=powershell-5.1) オンリー

3. じゃあ帰るか・・・

※今までWindows環境でのパッケージマネージャーは [Chocolatey](https://chocolatey.org/) オンリーで [PackageManagement](https://github.com/OneGet/oneget) とかは [PowerShell](https://docs.microsoft.com/ja-jp/powershell/module/packagemanagement/?view=powershell-5.1) なので無理なんです・・・ごめんなさい。

- とは言え [Chocolatey](https://chocolatey.org/install) だって基本 `powershell.exe` 推しでもドキュメントを探せば書いてあったし [Google](https://www.google.co.jp/) 先生に訊いてみる

    - [Wiki](https://github.com/lukesampson/scoop/wiki/Why-PowerShell) に `powershell.exe` 推しページがあった
        - `cmd.exe` については、どこにも見当たらない
    - 公式だけでなくQiitaにも見当たらない
- 絶　望　的

と言うことで(主にChocolateyを参考に)試してみたのでご紹介します。

## 環境
- Microsoft Windows 10 Enterprise
    - 64 ビット
    - 10.0.18363 (バージョン 1909 OSビルド 18363.476)
- (社内認証)プロキシ サーバー 有
    - インターネット オプション→接続→LANの設定→自動構成

## 結論

- とにかく結果だけ知りたい方へ

```powershell:cmd.exe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -Command "[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials; Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
```

- プロキシが必要ない場合はコチラ

```powershell:cmd.exe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -Command "Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
```

## 失敗も含めて時系列に

- [x]  :one: とりあえず [Chocolatey](https://chocolatey.org/docs/installation#install-with-cmdexe) を参考に [公式](https://scoop.sh/) の下部にある「Installs in seconds」を試す　→　NG

```powershell:cmd.exe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -Command "Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
```

![NG.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/b67c7b04-7b65-5fcd-1def-e8c65ebadaa7.png)

- [x]  :two: [Wiki](https://github.com/lukesampson/scoop/wiki/Using-Scoop-behind-a-proxy) を参考にプロキシを通す　→　NG
    - ※プロキシが必要ない環境なら起こらないはずなのでスルーしてください

```powershell:cmd.exe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -Command "[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials; Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
```

![NG2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/09cd52c9-f45a-72f7-5b99-d1ecdd57d2f2.png)

- [x]  :three: 実行ポリシーがないとこのとなので、アドバイス通り `PowerShell` に「Restricted」のポリシーを付与　→　NG

```powershell:cmd.exe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -scope CurrentUser -Command "[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials; Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
```

![NG3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/bd328580-3fb0-7973-64af-6721282f7f22.png)

- [x]  :four: 外部からの呼び出しにスコープは指定出来ないので除く　→　OK

```powershell:cmd.exe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -Command "[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials; Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
```

![OK.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/07ac2bf5-c973-103a-4b87-8c0bb74c511f.png)

- [x]  :five: 別プロセスで立ち上げた `コマンド プロンプト` でインストール出来たか確認　→　OK
    - ※インストールスクリプトで設定された環境変数(`Path`)が読み込まれていないため

```powershell:cmd.exe
scoop help
```

![OKOK.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/48a7cebc-abe5-601c-24b5-c8bf404a614b.png)

### おまけ

- [x]  :six: 当初の目的である [ツール](https://github.com/oldj/SwitchHosts#scoop) をインストールする前に検索してみる　→　NG

```powershell:cmd.exe
scoop search switchhosts
```

![OKOKNG.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/432c2878-0dde-ac7c-38ff-cb930369ad2a.png)
![OKOKNG_.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/04a369ff-acf7-615f-d6cf-afbd39255263.png)

- [x]  :seven: どうやら「main」bucket には入っていないようなので「extras」を追加して再度検索してみる　→　OK

```powershell:cmd.exe
scoop bucket add extras
```
```powershell:cmd.exe
scoop search switchhosts
```

![OKOKNGOK.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/e43088d9-8981-7295-0bae-54761df92ae4.png)

- [x]  :eight: インストール　→　NG

```powershell:cmd.exe
scoop install switchhosts
```

![OKOKNGOKNG.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/1b46b2f8-7a8d-a155-27d3-e23a21a5d3a8.png)

- [x]  :nine: [Wiki](https://github.com/lukesampson/scoop/wiki/Using-Scoop-behind-a-proxy) に「匿名認証」と書いてあったため `scoop config proxy user:password@default` を実行し再度インストール　→　NG
    - ※諸事情により今回は `cntlm (localhost:3128)` を利用しています

```powershell:cmd.exe
scoop config proxy localhost:3128
```
```powershell:cmd.exe
scoop install switchhosts
```

![OKOKNGOKNGNG.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/c3bdb9ff-abdf-d0c8-ba6b-5a5e0e8f64c5.png)

- [x]  :ten: 先ほどのエラー時に既にインストール済となってしまっているようなので、アンインストール→再インストール　→　OK
    - ※「switchhosts」は「7zip」に依存している(ダウンロードファイルが7zipで圧縮されていた)らしく自動でインストールされた

```powershell:cmd.exe
scoop uninstall 7zip
```
```powershell:cmd.exe
scoop uninstall switchhosts
```
```powershell:cmd.exe
scoop install switchhosts
```

![OKOKNGOKNGNGOK.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116864/9e39b23e-aba4-d1a5-a7de-8182d2d4a633.png)

## 感想
`PowerShell` から逃げていたばかりに無駄な時間を費やしてしまいましたが、なんとか？なりました！

基本 `Chocolatey` のみでやり繰りしていますが `Scoop` もなかなか良いと思いました。

`Scoop` 自体についての情報は [Qiita](https://qiita.com/tags/scoop) 等に詳しく説明されていると思いますので調べてみてください。

(`PowerShell` 覚えないといけないかなぁ・・・)