Windows Package Manager - winget クイックマニュアル


winget とは

  • MS社製のパッケージマネージャ
  • リポジトリは Windows Package Manager
  • 2021年5月26日 に初版公開
  • ChocolateyScoopなどと同様に、コマンド一発でアプリケーションのインストールが可能
  • Windows10 と Windows11 にバンドルされている


バージョン確認

大抵の環境では既にインストールされている。

> winget -v
v1.4.10173

インストールされていない場合は Microsoft Store からインストール可能。


利用可能なコマンド

winget は以下のように利用する。

> winget [<コマンド>] [<オプション>]

コマンドは以下を指定できる。

コマンド 説明
install 指定されたパッケージをインストール(エイリアスadd)
show パッケージに関する詳細を表示(エイリアスview)
source パッケージのソースの管理
search パッケージを検索(エイリアスfind)
list インストール済みパッケージを表示(エイリアスls)
upgrade 利用可能なアップグレードの表示と実行(エイリアスupdate)
uninstall 指定されたパッケージをアンインストール(エイリアスrm / remove)
hash インストーラー ファイルをハッシュするヘルパー
validate マニフェスト ファイルを検証
settings 設定を開くか、管理者設定を設定する
features 試験的な機能の状態を表示
export インストールされているパッケージのリストをエクスポート
import ファイル中のすべてのパッケージをインストール


インストール済みパッケージの確認

以下で一覧を確認できる。

winget で導入したものだけでなく、アプリケーションの追加と削除 で表示される項目も含まれる。

> winget ls

名前                              ID                       バージョン         利用可能      ソース
--------------------------------------------------------------------------------------------------
Intel® Graphics Control Panel     AppUp.IntelGraphicsCo…   3.3.0.0
Ubuntu 20.04 on Windows           Canonical.Ubuntu.2004    2004.2022.8.0                   winget
Git version 2.28.0                Git.Git                  2.28.0            2.40.1        winget
Google Chrome                     Google.Chrome            113.0.5672.127    114.0.5735.91 winget
...

winget で扱えるものは、ソースとして winget が表示される(winget パッケージの情報は winget-pkgs リポジトリ でYAMLファイルとして管理されている)。 Microsoft Store のパッケージは msstore が表示される。

名前とソースを指定する場合は以下のようにできる。

> winget ls --name git -s winget

名前               ID      バージョン 利用可能
----------------------------------------------
Git version 2.28.0 Git.Git 2.28.0     2.40.1


パッケージの検索

パッケージの検索は search で行うが、find というエイリアスがあるので、こちらを利用する方がタイプしやすい。

> winget find podman
名前           ID                    バージョン 一致        ソース
------------------------------------------------------------------
Podman         RedHat.Podman         4.5.1                  winget
dive           wagoodman.dive        0.10.0     Tag: podman winget
Podman Desktop RedHat.Podman-Desktop 1.0.1                  winget
...

空白を含む場合は "Podman Desktop" のようにダブルクオートで括る。

その他の細かい検索は、以下でヘルプを参照。

> winget find --help


アプリケーションのインストール

install または add でパッケージ名またはIDなどを query として指定する。

例えば以下のようになる。

> winget add RedHat.Podman-Desktop

パッケージを完全一致で指定する場合は -e--exact オプションを指定する。

以下のようにインストールが完了する。

> winget add RedHat.Podman-Desktop
見つかりました Podman Desktop [RedHat.Podman-Desktop] バージョン 1.0.1
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/containers/podman-desktop/releases/download/v1.0.1/podman-desktop-1.0.1-setup.exe
  ██████████████████████████████   113 MB /  113 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

インストールしたアプリケーションは winget ls で確認できるほか、「アプリと機能」のインストール済みアプリケーションでも確認できる。


特定のバージョンを指定するには --version オプションで指定する。

> winget add <query> --version 1.0.8

その他のオプションは以下参照。

> winget add --help


アプリケーションのアップグレード

アップグレード可能なパッケージの確認

> winget upgrade

名前                 ID                バージョン        利用可能       ソース
-------------------------------------------------------------------------------
Git version 2.28.0   Git.Git           2.28.0           2.40.1         winget
Google Chrome        Google.Chrome     113.0.5672.127   114.0.5735.91  winget
Zoom                 Zoom.Zoom         5.14.2.14578     5.14.5.15287   winget
...

エイリアスとして update でも同様。 ソースが winget のものでアップグレード可能なものが一覧できる。

全てアップグレード

> winget upgrade --all

特定アプリのみアップグレード

> winget upgrade Git.Git

名前(空白を含む場合はダブルクオートで括る)かIDで対象を指定。


アプリケーションのアンインストール

uninstall または rm で IDなどを query として指定する。

例えば以下のようになる。

> winget rm RedHat.Podman-Desktop

パッケージを完全一致で指定する場合は -e か --exact オプションを指定する。


導入パッケージのエクスポート/インポート

winget の管理対象パッケージは、インストール済みのアプリケーションの情報をエクスポートして、他のマシンにインポートすることで、アプリケーションを バッチ インストールできる。

以下のようにエクスポートファイルを指定してエクスポート。

> winget export -o export.json

以下のようなJSONファイルが出力される。

{
  "$schema" : "https://aka.ms/winget-packages.schema.2.0.json",
  "CreationDate" : "2023-06-01T13:06:04.838-00:00",
  "Sources" : 
  [
    {
      "Packages" : 
      [
        {
          "PackageIdentifier" : "Git.Git"
        },
        {
          "PackageIdentifier" : "Google.Chrome"
        },
        {
          "PackageIdentifier" : "Microsoft.Edge"
        },
        ...
      ],
      "SourceDetails" : 
      {
        "Argument" : "https://cdn.winget.microsoft.com/cache",
        "Identifier" : "Microsoft.Winget.Source_8wekyb3d8bbwe",
        "Name" : "winget",
        "Type" : "Microsoft.PreIndexed.Package"
      }
    }
  ],
  "WinGetVersion" : "1.4.10173"
}

必要なパッケージを加工するなどして、他のマシンで以下のようにインポートすることで、アプリケーションのバッチインストールができる。

> winget import -i export.json