Windows環境でGUIを使わずコマンドプロンプト(やPowerShell)でアプリをインストールする方法まとめてみる。
思いつく限りで、exeファイルを実行するパターン、msiexecでmsiインストーラーを実行するパターン、Windows用パッケージ管理システムであるChocolateyでインストールするパターン、おなじくパッケージ管理システムであるwingetでインストールするパターンの合計4つが思い浮かぶので、それぞれの基本的な実施方法についてまとめていきたい。
exeファイルをコマンドプロンプトから実行する
文字通りexe形式のインストーラーをコマンドプロンプト(もしくはPowerShell)から直接実行する方式だ。以下の形式でコマンドを実行する。
start <実行するexeファイルのパス>
事前にダウンロードしたteratermのexeインストーラーを配置したフォルダに移動し、startコマンドを実行してみる。
C:\Users\azureuser>cd C:\Users\azureuser\Downloads
C:\Users\azureuser\Downloads>start teraterm-4.106.exe
インストールウィザードが立ち上がってきた。全てがコマンドプロンプト上で完結するのかと思いきや、以降はインストールウィザードによるGUIでのインストールと同じ流れを実施することになった。(最終的にインストールは完了したが、GUIから実施した場合と同様のため結果は割愛する。)
msiexecからmsiインストーラーを実行する
msiexeコマンドでダウンロードしたmsiインストーラーを実行する方法を試してみる。構文は以下の通り。
msiexec.exe [/i][/a][/j{u|m|/g|/t}][/x] <msiインストーラーのパス>
/iでインストールが実行されるようで、他にも複数のオプションパラメーターがあるようなので試してみる。以下の通り、インストーラーのあるフォルダに移動し、msiexecで7zipのインストールを実施してみる。(インストール対象の7zip msiは事前にダウンロードしてます)
C:\Users\azureuser>cd C:\Users\azureuser\Downloads
C:\Users\azureuser\Downloads>msiexec /i 7z2301-x64.msi
実行してみたが、インストールウィザードが立ち上がってくる。
CLIだけでインストールを完結させる方法はないものだろうか。調べてみたところ、インストールプロセスでUIを表示させないようにする/qnオプションという表示オプションが有効そうだ。以下の内容でコマンドを実行してみる。
msiexec /i /qn 7z2301-x64.msi
ヘルプ画面が表示されてきた。入力内容が間違えているようだ。
表示オプション指定 /qn をコマンドの最後尾に置き換えてみた。
msiexec /i 7z2301-x64.msi /qn
何も表示されないままコマンドが終了したが…
C:\Users\azureuser\Downloads>msiexec /i 7z2301-x64.msi /qn
C:\Users\azureuser\Downloads>
スタートメニューにて、7zipのインストールが成功していることが確認できた。
このやり方であれば、コマンドラインのみでインストールが完結するので色々な場面で使えそうだ。
Chocolateyを実行する
Windowsのパッケージ管理システムであるChocolateyを使用してアプリのインストールを行う。Chocolateyはオープンソースソフトウェアだ。ソフトウェアパッケージの依存関係の解決や、ソフトウェアのインストールや削除を行うことができる。早い話がDebian系OSのAPTやRed Hat系OSのYumのような位置のツールだ。
Chocolateyがすでに環境にインストールされていれば、コマンドプロンプト(もしくはPowerShell)で、
choco
と実行すると、以下のようにchocolateyクライアントのバージョンが表示される。
C:\Users\azureuser>choco
Chocolatey v2.2.2
Please run 'choco -?' or 'choco -?' for help menu.
Chocolateyがインストールされていることが確認できたら、コマンドプロンプト(もしくはPowerShell)で、以下のようにコマンドを実行する。
choco install <パッケージ名> <オプション>
オプションとしては以下のようなパターンがある。
-y: yes(Y) / no(N)を聞かれるところをすべて yes でインストールを進める
–version:インストールするアプリのバージョンを指定する
以下のコマンドでTeratermをインストールしてみる。
choco install teraterm -y
以下の通り、Teratermがインストールされることを確認できる。
C:\Users\azureuser>choco install teraterm -y
Chocolatey v2.2.2
Installing the following packages:
teraterm
By installing, you accept licenses for the packages.
Progress: Downloading teraterm 4.107.0... 100%
teraterm v4.107.0 [Approved]
teraterm package files install completed. Performing other installation steps.
Downloading teraterm
from 'https://github.com/TeraTermProject/teraterm/releases/download/v4.107/teraterm-4.107.exe'
Progress: 100% - Completed download of C:\Users\azureuser\AppData\Local\Temp\2\chocolatey\teraterm\4.107.0\teraterm-4.107.exe (13.92 MB).
Download of teraterm-4.107.exe (13.92 MB) completed.
Hashes match.
Installing teraterm...
teraterm has been installed.
teraterm can be automatically uninstalled.
The install of teraterm was successful.
Software installed to 'C:\Program Files (x86)\teraterm\'
Chocolatey installed 1/1 packages.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
以下の通り、teratermがインストールされていることが確認できる。
wingetを実行する
Chocolateyと同じくWindows環境のパッケージ管理システムであるwinget(Windows Package Manager)を使って、コマンドラインでのアプリインストールを行う方法を実施してみる。wingetはChocolateyと比べてずいぶんと後発にあたるもののようだ。
wingetがすでにインストールされている環境であれば、コマンドプロンプト(もしくはPowerShell)で、
winget -v
と入力すると、以下のようにwingetのバージョンが表示される。(wingetのWindows Server 2022への対応状況が不明だったため、Windows11機で実施した。)
PS C:\Users\lespa> winget -v
v1.6.3133
以下のコマンドでTeratermをインストールしてみる。
winget install 7zip.7zip
インストールプロセスの途中でいろいろと聞かれた。
C:\Users\xxxxx>winget install 7zip.7zip
'msstore' ソースでは、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")。
すべてのソース契約条件に同意しますか?
[Y] はい [N] いいえ:
ソース契約条件に全て同意したい場合は、–accept-source-agreementsというオプションをつけると、ソース契約条件にすべて同意する形で後続処理を進めることができる。
winget install 7zip.7zip --accept-source-agreements
インストールが完了した。
C:\Users\xxxx>winget install 7zip.7zip --accept-source-agreements
見つかりました 7-Zip [7zip.7zip] バージョン 23.01
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています…
インストールが完了しました
インストールされていることが確認できる。インストールされたアプリの一覧が確認できるwinget listも試しに実行してみる。
winget list --ID 7zip.7zip
以下の通り結果が表示された。
C:\Users\xxxxx>winget list --ID 7zip.7zip
名前 ID バージョン ソース
7-Zip 23.01 (x64) 7zip.7zip 23.01 winget
今後、機会があれば、winget、Chocolateyを比較してみたい。
コメント