Windows環境でコマンドプロンプトを使ってアプリをインストールする方法

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を比較してみたい。

コメント

タイトルとURLをコピーしました