【初心者向け】Windows でのアプリケーション管理を劇的に楽にする winget 入門

コマンド一発でアプリケーションを検索・インストール・更新・アンインストール | Windows 標準パッケージマネージャー「winget」の使い方と注意点
ヒーローイメージ

目次
  1. この記事のポイント
  2. winget とは?
  3. winget がすでに使えるか確認する
  4. winget インストール方法
  5. winget コマンドの使い方
  6. 応用テクニック・自動化
  7. 使用上の注意点・安全性
  8. まとめ
  9. 参考情報

この記事のポイント

  • winget とは?

    • Microsoft が公式に提供する Windows 用パッケージ管理ツールです。
    • コマンドでアプリケーションのインストール・更新・削除ができます。
  • 対応環境と導入方法

    • Windows 10(1809以降)、Windows 11 で利用可能です。
    • 多くの環境で App Installer (Microsoft Store)に標準搭載されています。
  • 基本操作コマンド

    • winget search:アプリケーションを検索
    • winget install:インストール
    • winget upgrade:更新
    • winget uninstall:削除
    • winget list:インストール済みアプリケーション一覧
    • winget show:詳細情報を確認
  • 応用活用例

    • 複数アプリケーションを一括インストール(スクリプト化)
  • 注意点と制約

    • すべてのアプリケーションが winget に対応しているわけではない
    • 管理者権限が必要な操作もある
    • 自動更新機能は標準では非搭載
    • 信頼できるソースからのみ利用することが安全

本記事を読む上での前提知識

winget は、コマンドラインツールを通じて利用します。コマンドライン操作がわからない人は、以下のページを参考にするとよいでしょう。

【初心者向け】Windowsコマンドプロンプトとは?基本操作・便利コマンド10選・注意点を徹底解説
コマンドプロンプトとは、Windowsでファイル操作やシステム管理を行うための文字入力型ツールです。本記事では、初心者にもわかりやすく仕組み・起動方法・基本コマンド10選・注意点を丁寧に解説します。
palette-code.com
リンクカード

winget とは?

  • winget(Windows Package Manager CLI)とは、Microsoft が提供する、Windows 用の公式パッケージ管理コマンドラインツールです。

  • MSIX・MSI・EXE 形式のインストーラーを扱えますが、すべてのアプリケーションに対応できるわけではありません。
    特に GUI インストーラーでサイレントインストールが難しいものは扱えないことがあります。

  • パッケージ情報はマニフェスト(YAML形式)として Microsoft によって管理されており、GitHub 上にオープンなリポジトリが存在します。

  • セキュリティ面では、不正なアプリケーションが簡単に混入しないよう対策が講じられています。

  • 標準では自動更新スケジュール機能は備えておらず、必要に応じてサードパーティの補助ツールやスクリプトを用いることがあります。

Note
パッケージ管理とは、アプリケーションの検索、インストール、更新、アンインストールの操作を、コマンドを通じてリポジトリ(アプリケーションカタログ)を自動的に管理できる仕組みです。 Linux の aptyum、macOS の brew といったパッケージマネージャーと概念的に近いものです。

winget がすでに使えるか確認する

winget は、Windows 10(1809 以降)、Windows 11 で利用可能です。

ほとんどの環境では、すでに使えるようになっていることがありますが、状況によっては手動で準備が必要です。 まず、コマンドライン(PowerShell または Windows ターミナル、コマンドプロンプト)を起動し、以下のコマンドを入力してみます。

winget --version

以下のようにバージョンが表示されれば、winget がすでに有効になっています。

v1.11.510

「コマンドが見つかりません」などのエラーが出る場合、インストールが必要です。

winget インストール方法

アプリケーション インストーラー画面
winget は、Microsoft Store で提供されている「アプリ インストーラー」に付属しています。
そのため「アプリ インストーラー」をインストール(または更新)することで簡単に導入可能です。

しかし、お使いの PC が何らかの理由で Microsoft Store にアクセスできない人向けに、本章では Microsoft Store 経由以外で winget をインストールする手順を解説します。

動作確認環境

  • Windows 11 Home

手順

いくつか方法がありますが、今回は GitHub からインストールする方法で解説します。
まずは下記のページにアクセスします。

microsoft/winget-cli - GitHub
Windows Package Manager CLI (aka winget). Contribute to microsoft/winget-cli development by creating an account on GitHub.
github.com
リンクカード

ページ中段にある「Microsoft.DesktopAppInstaller_●●●_.msixbundle」がインストーラーのダウンロードリンクです。

winget インストーラーのダウンロード

ダウンロードしたインストーラーをダブルクリックするとインストーラー画面が起動しますので、画面の指示に従って進めればインストールできます。 インストール完了後、コマンドラインを起動して以下のとおりコマンドを実行し、バージョン情報が表示されていれば正常にインストールされています。

実行内容
winget -v
実行結果例はこちら
v1.11.510
Note
表示されるバージョン情報は環境によって異なります。

winget コマンドの使い方

winget を実際に使ってみましょう。ここでは代表的なコマンドを具体例付きで解説します。

winget をはじめて利用した場合

はじめて winget コマンドを実行すると以下のとおり表示されます。yを入力した後に Enter キーを押せば、先に進めます。

'msstore' ソースでは、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")。

すべてのソース契約条件に同意しますか?
[Y] はい  [N] いいえ: y
winget コマンド一覧
コマンド 概要説明
winget search アプリケーションを検索
winget install アプリケーションをインストール
winget uninstall アプリケーションをアンインストール
winget upgrade アプリケーションを更新
winget list インストール済みアプリケーション一覧表示
winget show アプリケーションの詳細情報表示

下記のタブをクリックすると、各コマンドの解説内容が表示されます。

winget searchコマンドは、インストール可能なアプリケーションを検索して表示するためのコマンドです。

コマンド書式
winget search [オプション] クエリ文字列
オプション 説明
--id 検索対象を ID で指定します。
--name 検索対象を名前で指定します。

クエリ文字列に「検索したいアプリケーションの ID または名前」を指定して実行すると、検索条件に合致するアプリケーション情報が一覧表示されます。 例えば、pythonで検索したいときは、以下のとおり実行します。

winget search python
実行結果例はこちら
名前                                                ID                                 バージョン   一致            ソース
---------------------------------------------------------------------------------------------------------------------------
Python 3                                            Python.Python.3.9                  3.9.13       Command: python winget
Python 3                                            Python.Python.3.12                 3.12.0a4     Command: python winget
Python 3.11                                         Python.Python.3.11                 3.11.2       Command: python winget
Python 3.10                                         Python.Python.3.10                 3.10.9       Command: python winget
Python 2                                            Python.Python.2                    2.7.18150    Command: python winget

(以下省略)

これにより、該当するパッケージ名、ID、バージョン、発行元などが一覧表示されます。
(キーワードマッチングなので完全一致しない場合も表示されます。)

--idオプションを指定すると、検索対象を ID に絞り込んで検索します。

winget search --id Python.Python.3.11
実行結果例はこちら
名前        ID                 バージョン ソース
-------------------------------------------------
Python 3.11 Python.Python.3.11 3.11.2     winget

--nameオプションを指定すると、検索対象を名前に絞り込んで検索します。

winget search --name "Python 3.11"
実行結果例はこちら
名前        ID                 バージョン ソース
--------------------------------------------------
Python 3.11 9NRWMJP3717K       Unknown    msstore
Python 3.11 Python.Python.3.11 3.11.2     winget

応用テクニック・自動化

winget は単発操作だけでなく、スクリプト化・自動化にも向いています。
初心者が覚えておくと便利な応用例として、複数アプリケーションを一括インストールする例を紹介します。

以下の内容を記載したバッチファイルを作成します。

バッチファイルの作成方法はこちら
メモ帳などのテキストファイルを作成します。保存する際に、拡張子を .bat にするとバッチファイルとして作成することができます。
例えばファイル名を install.bat で保存すれば問題ありません。

install.bat
@echo off
setlocal enabledelayedexpansion

REM --- 自己昇格(管理者権限で再起動) ---
net session >nul 2>&1
if %errorlevel% NEQ 0 (
  echo 管理者権限で再実行します...
  powershell -NoProfile -ExecutionPolicy Bypass -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
  exit /b
)

REM --- winget の存在確認 ---
where winget >nul 2>&1
if %errorlevel% NEQ 0 (
  echo winget が見つかりません。App Installer をインストール/更新してから再実行してください。
  pause
  exit /b 1
)

REM --- インストールしたいパッケージIDを並べる(必要に応じて追加/削除) ---
set APPS= ^
 Google.Chrome ^
 Mozilla.Firefox.ja

echo ===== 一括インストール開始 =====
for %%A in (%APPS%) do (
  echo.
  echo [%%A] をインストールしています...
  winget install --id "%%A" --accept-package-agreements --accept-source-agreements --disable-interactivity -h
  if !errorlevel! NEQ 0 (
    echo [%%A] のインストールでエラーが発生しました(errorlevel=!errorlevel!)。
  ) else (
    echo [%%A] のインストールが完了しました。
  )
)

echo.
echo ===== すべての処理が終了しました =====
pause

上記バッチファイルのポイントは以下のとおりです。

  • アプリケーションインストール時に --accept-package-agreements--accept-source-agreementsを指定して、自動で同意するようにしています。
  • アプリケーションインストール時に --disable-interactivity-hを指定して、サイレントでのインストール実行を極力試みています(サイレント非対応のインストーラーでは、ダイアログが表示されることがあります)。
  • 管理者権限が必要なアプリもあるため、自己昇格を入れています。

上記ファイルをダブルクリックするとバッチが実行され、ファイル内に記載したアプリケーションが一括インストールされます。
(今回の例では、Google Chrome と Mozilla Firefox (日本語版) をインストールしています。)

実行結果例はこちら
===== 一括インストール開始 =====

[Google.Chrome] をインストールしています...
見つかりました Google Chrome [Google.Chrome] バージョン 141.0.7390.108
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://dl.google.com/dl/chrome/install/googlechromestandaloneenterprise64.msi
  ██████████████████████████████   131 MB /  131 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
[Google.Chrome] のインストールが完了しました。

[Mozilla.Firefox.ja] をインストールしています...
見つかりました Mozilla Firefox (ja) [Mozilla.Firefox.ja] バージョン 144.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://download-installer.cdn.mozilla.net/pub/firefox/releases/144.0/win64/ja/Firefox%20Setup%20144.0.exe
  ██████████████████████████████  80.1 MB / 80.1 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
[Mozilla.Firefox.ja] のインストールが完了しました。

===== すべての処理が終了しました =====
続行するには何かキーを押してください . . .

対話形式インストールダイアログ表示

使用上の注意点・安全性

winget は強力なツールですが、使ううえで注意すべき点もあります。

  • 信頼できるソースを使うこと

    • 公式リポジトリや実績ある公開リポジトリから利用し、未知のソースは慎重に取り扱うべきです。
  • サイレントインストールに非対応なインストーラー

    • GUI 操作が必須なインストーラー、あるいはサイレントインストールに対応していないものは失敗することがあります。
  • 管理者権限・昇格要求

    • アプリケーションによっては管理者権限必須。操作中に UAC が出ることもあります。
  • 自動更新スケジュール機能がない

    • 毎日/毎週の自動更新は標準機能ではなく、手動または補助ツールで対応が必要です。
  • 古い Windows では未対応

    • Windows 10 でもバージョン 1809 より前の環境には対応していないため、環境によっては手動で扱うしかない場合があります。
  • 一部アプリケーションは非対応

    • 特殊なインストーラー、ライセンスが複雑なもの、特殊な依存関係を持つものは winget 経由で管理できない場合があります。

こうした点に注意しながら使っていけば、非常に便利なツールになります。

まとめ

winget を使えば、Windows でもアプリケーションのインストール・更新管理を1回のコマンドでできるようになり、手間を大幅に削減できます。
ただし、すべてのアプリケーションが対応しているわけではないこと、管理者権限が必要なケースがあること、信頼性やセキュリティ面で注意が必要なことなどを理解しながら使うことが重要です。

参考情報

Windows パッケージ マネージャー | Microsoft Learn
Windows パッケージ マネージャーは、Windows にアプリケーションをインストールするためのコマンド ライン ツールと一連のサービスで構成される、包括的なパッケージ マネージャー ソリューションです。
learn.microsoft.com
リンクカード
microsoft/winget-cli - GitHub
Windows Package Manager CLI (aka winget). Contribute to microsoft/winget-cli development by creating an account on GitHub.
github.com
リンクカード

コメント


Palette Codeなるべく丁寧にプログラミング関連技術を解説するサイト