~Scoop を Qiita にも 公式 にも Wiki にも書いてなかったので Chocolatey の様に cmd.exe
でインストールしてみた~の紹介
拝啓背景
-
とある ツール をインストールしようと思ったらパッケージマネージャーが
choco
ではなくscoop
だったので試しに導入してみようとインストール情報を検索してみた -
どこを探しても PowerShell オンリー
-
じゃあ帰るか・・・
※今までWindows環境でのパッケージマネージャーは Chocolatey オンリーで PackageManagement とかは PowerShell なので無理なんです・・・ごめんなさい。
-
とは言え Chocolatey だって基本
powershell.exe
推しでもドキュメントを探せば書いてあったし Google 先生に訊いてみる-
Wiki に
powershell.exe
推しページがあった-
cmd.exe
については、どこにも見当たらない
-
- 公式だけでなくQiitaにも見当たらない
-
Wiki に
-
絶 望 的
と言うことで(主にChocolateyを参考に)試してみたのでご紹介します。
環境
- Microsoft Windows 10 Enterprise
- 64 ビット
- 10.0.18363 (バージョン 1909 OSビルド 18363.476)
- (社内認証)プロキシ サーバー 有
- インターネット オプション→接続→LANの設定→自動構成
結論
- とにかく結果だけ知りたい方へ
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')"
- プロキシが必要ない場合はコチラ
cmd.exe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -Command "Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
失敗も含めて時系列に
- とりあえず Chocolatey を参考に 公式 の下部にある「Installs in seconds」を試す → NG
cmd.exe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -Command "Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
-
Wiki を参考にプロキシを通す → NG
- ※プロキシが必要ない環境なら起こらないはずなのでスルーしてください
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')"
-
実行ポリシーがないとこのとなので、アドバイス通り
PowerShell
に「Restricted」のポリシーを付与 → NG
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')"
- 外部からの呼び出しにスコープは指定出来ないので除く → OK
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- ※インストールスクリプトで設定された環境変数(
Path
)が読み込まれていないため
- ※インストールスクリプトで設定された環境変数(
cmd.exe
scoop help
おまけ
- 当初の目的である ツール をインストールする前に検索してみる → NG
cmd.exe
scoop search switchhosts
- どうやら「main」bucket には入っていないようなので「extras」を追加して再度検索してみる → OK
cmd.exe
scoop bucket add extras
cmd.exe
scoop search switchhosts
- インストール → NG
cmd.exe
scoop install switchhosts
-
Wiki に「匿名認証」と書いてあったため
scoop config proxy user:password@default
を実行し再度インストール → NG- ※諸事情により今回は
cntlm (localhost:3128)
を利用しています
- ※諸事情により今回は
cmd.exe
scoop config proxy localhost:3128
cmd.exe
scoop install switchhosts
-
先ほどのエラー時に既にインストール済となってしまっているようなので、アンインストール→再インストール → OK
- ※「switchhosts」は「7zip」に依存している(ダウンロードファイルが7zipで圧縮されていた)らしく自動でインストールされた
cmd.exe
scoop uninstall 7zip
cmd.exe
scoop uninstall switchhosts
cmd.exe
scoop install switchhosts
感想
PowerShell
から逃げていたばかりに無駄な時間を費やしてしまいましたが、なんとか?なりました!
基本 Chocolatey
のみでやり繰りしていますが Scoop
もなかなか良いと思いました。
Scoop
自体についての情報は Qiita 等に詳しく説明されていると思いますので調べてみてください。
(PowerShell
覚えないといけないかなぁ・・・)