覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

winget - Windows用のパッケージマネージャー

Linux には当然のように存在し、Mac でも Homebrew というようなパッケージマネージャーが存在しています。

パッケージマネージャーを利用すれば、インストールしたいソフトウェアやドライバ、それらが依存関係を持つものをコマンド操作でインストールしたり、アップデートしたりできます。

Windowsだけ、入れたいソフトウェアごとにWebブラウザでアクセスしてダウンロードして。。。みたいな操作が必要でしたが、
winget というWindowsパッケージマネージャーが存在しています。割と最近まで存在を知りませんでした。


たまたま 新しいPC (OS: Windows 11) を購入し真っさらに近い状態なので winget を使って一部ソフトウェアをインストールしてみました。

今回試した環境は、 バージョン: 21H2, OSビルド: 22000.493 です

準備

上記にリンクしたMSの公式サイトに以下のように書いてあります

Microsoft Store に移動すると、アプリ インストーラーを更新するだけで、winget コマンド ライン ツールがインストールされます。

f:id:nini_y:20220306203432p:plain

Microsoft Storeにアクセスし、winget を検索するとアプリ インストーラーが表示されます。
このスクリーンショットでは表示できていませんが、アプリインストーラの更新ボタンを押します。


これで準備完了です。


winget の利用

DOSプロンプトで winget install {対象のパッケージ} で対象のパッケージ(ソフトウェア等)をインストールすることができます。


■7-Zipをインストールした例

C:\Users\ykiv>winget install 7-zip
見つかりました 7-Zip [7zip.7zip] バージョン 21.07
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://www.7-zip.org/a/7z2107-x64.exe
  ██████████████████████████████  1.46 MB / 1.46 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました


■WinSCPをインストールした例

C:\Users\ykiv>winget install WinSCP
見つかりました WinSCP [WinSCP.WinSCP] バージョン 5.19.6
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://sourceforge.net/projects/winscp/files/WinSCP/5.19.6/WinSCP-5.19.6-Setup.exe/download
  ██████████████████████████████  10.8 MB / 10.8 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました


無事に 7-Zip や WinSCP がインストールできていました。

f:id:nini_y:20220306204547p:plain

f:id:nini_y:20220306204452p:plain


利用可能なコマンド

winget コマンドだけで実行すると利用可能な各種コマンドが以下のように表示されます

C:\Users\ykiv>winget
Windows パッケージ マネージャー v1.2.10271
Copyright (c) Microsoft Corporation. All rights reserved.

WinGet コマンド ライン ユーティリティを使用すると、コマンド ラインからアプリケーションやその他のパッケージをインストールできます。

使用状況: winget [<コマンド>] [<オプション>]

使用できるコマンドは次のとおりです:
  install    指定されたパッケージをインストール
  show       パッケージに関する情報を表示します
  source     パッケージのソースの管理
  search     アプリの基本情報を見つけて表示
  list       インストール済みパッケージを表示する
  upgrade    指定されたパッケージをアップグレードします
  uninstall  指定されたパッケージをアンインストール
  hash       インストーラー ファイルをハッシュするヘルパー
  validate   マニフェスト ファイルを検証
  settings   設定を開くか、管理者設定を設定する
  features   試験的な機能の状態を表示
  export     インストールされているパッケージのリストをエクスポート
  import     ファイル中のすべてのパッケージをインストール

特定のコマンドの詳細については、そのコマンドにヘルプ引数を渡します。 [-?]

次のオプションを使用できます。
  -v,--version  ツールのバージョンを表示
  --info        ツールの一般情報を表示

詳細については、次を参照してください。 https://aka.ms/winget-command-help


■searchコマンドの実行例

C:\Users\ykiv>winget search "IntelliJ IDEA"
名前                                  ID                                   バージョン   一致               ソース
-----------------------------------------------------------------------------------------------------------------
IntelliJ IDEA Ultimate Edition (EAP)  JetBrains.IntelliJIDEA.Ultimate.EAP  221.4501.155 Tag: intellij idea winget
IntelliJ IDEA Community Edition (EAP) JetBrains.IntelliJIDEA.Community.EAP 221.4501.155 Tag: intellij idea winget
IntelliJ IDEA Ultimate Edition        JetBrains.IntelliJIDEA.Ultimate      213.6777.52                     winget
IntelliJ IDEA Educational Edition     JetBrains.IntelliJIDEA.Edu           213.6461.90                     winget
IntelliJ IDEA Community Edition       JetBrains.IntelliJIDEA.Community     213.6777.52                     winget

この実行例を見る限り、IntelliJ IDEA も winget でパッケージとして管理されているようです


補足

winget でソフトウェアをインストールした場合、.msi ファイルを手動で実行してインストールした場合と比較して、コンテキストメニュー(右クリックメニュー)には対象ソフトウェアが追加されない等の違いが出る場合があります。