はじめに
弊社株式会社アイティードゥでは、これまでWindowsのパッケージ管理に主にChocolatyを使ってきました。Windows Package Manager(winget)への入れ替えを検討して試用を行っています。この記事では、wingetの基本的なコマンドから高度な使い方までを実用的なチートシートとしてまとめました。
Windows Package Manager(winget)Windowsユーザーのためのコマンドラインパッケージマネージャーです。コマンド一つでアプリケーションのインストール、更新、削除ができ、環境構築を効率化できます。
インストールと確認
wingetのインストール
wingetはWindows 10 (1709以降) およびWindows 11に標準でインストールされていますが、手動でインストールすることも可能です。
# バージョン確認
winget -v
# App Installerが入っていない場合、Microsoft Storeからインストール
# または以下のコマンドでGitHubから最新版をインストール
Invoke-WebRequest -Uri https://github.com/microsoft/winget-cli/releases/latest/download/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle -OutFile winget.msixbundle
Add-AppxPackage -Path winget.msixbundle
Remove-Item winget.msixbundle
VCLibsのインストール(必要な場合)
エラーが発生する場合は、必要なランタイムをインストールします。
# x64用のVCLibsをインストール
Invoke-WebRequest -Uri https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx -OutFile vclibs.appx
Add-AppxPackage -Path vclibs.appx
Remove-Item vclibs.appx
基本コマンド
検索と情報表示
# アプリケーションの検索
winget search <検索キーワード>
# 例: VSCodeを検索
winget search vscode
# 正確な名前で検索(大文字小文字を区別)
winget search --exact <名前>
winget search -e <名前>
# パッケージの詳細情報を表示
winget show <パッケージID>
# 例: VSCodeの詳細情報
winget show Microsoft.VisualStudioCode
# 特定パッケージの利用可能なバージョンを表示
winget show <パッケージID> --versions
インストール
# 名前またはIDを指定してインストール
winget install <アプリ名またはID>
# 例: VSCodeをインストール
winget install Microsoft.VisualStudioCode
# 正確なIDを指定して確実にインストール
winget install --exact --id <パッケージID>
winget install -e -id <パッケージID>
# 特定バージョンをインストール
winget install <パッケージID> --version <バージョン>
# サイレントインストール(ユーザー入力なし)
winget install <パッケージID> --silent
winget install <パッケージID> -h
# インストール先を指定
winget install <パッケージID> --location <パス>
アップグレード
# 更新可能なパッケージを一覧表示
winget upgrade
# 特定のパッケージを更新
winget upgrade <パッケージID>
# すべてのパッケージを更新
winget upgrade --all
# 例: VSCodeを更新
winget upgrade Microsoft.VisualStudioCode
アンインストール
# パッケージをアンインストール
winget uninstall <パッケージID>
# 例: VSCodeをアンインストール
winget uninstall Microsoft.VisualStudioCode
# サイレントアンインストール
winget uninstall <パッケージID> --silent
インストール済みパッケージの管理
# インストール済みパッケージの一覧表示
winget list
# キーワードでインストール済みパッケージをフィルタリング
winget list <検索キーワード>
# 例: インストール済みのMicrosoftアプリを表示
winget list Microsoft
高度な使い方
エクスポートとインポート
# インストール済みアプリを設定ファイルにエクスポート
winget export -o <出力ファイル名>.json
# バージョン情報を含めてエクスポート
winget export -o <出力ファイル名>.json --include-versions
# 例: 現在の環境をエクスポート
winget export -o my-apps.json
# JSONファイルからアプリをインポート
winget import -i <JSONファイル名>
# 例: エクスポートしたアプリをインポート
winget import -i my-apps.json
# バージョンを無視してインポート(最新版をインストール)
winget import -i <JSONファイル名> --ignore-versions
設定とカスタマイズ
# wingetの設定を開く
winget settings
# 設定の例(settings.jsonの内容)
{
"experimentalFeatures": {
"experimentalMSStore": true,
"experimentalArg": false
},
"visual": {
"progressBar": "accent"
},
"installBehavior": {
"preferences": {
"scope": "user",
"locale": ["ja-JP", "en-US"]
}
},
"telemetry": {
"disable": true
},
"network": {
"downloader": "wininet",
"doProgressTimeoutInSeconds": 60
}
}
パッケージリポジトリ(ソース)の管理
# 利用可能なパッケージリポジトリ一覧の表示
winget source list
# 新しいパッケージリポジトリの追加
winget source add <リポジトリ名> <リポジトリURL>
# パッケージリポジトリの削除
winget source remove <リポジトリ名>
# パッケージリポジトリ情報の更新
winget source update
# 特定のパッケージリポジトリからアプリを検索
winget search <検索ワード> --source <リポジトリ名>
パッケージのハッシュ検証
# インストーラーファイルのハッシュを計算
winget hash <インストーラーファイルのパス>
# 例: セットアップファイルのハッシュを計算
winget hash C:\Downloads\setup.exe
実験的機能とプレビュー機能
# 実験的機能の表示
winget features
# 実験的機能の有効化(settings.jsonで設定)
# "experimentalFeatures": { "featureName": true }
winget configuration(構成管理)
winget 1.6以降の新機能である構成管理機能のコマンドです。
# YAML構成ファイルから環境をセットアップ
winget configure <YAMLファイル>
# 例: 開発環境をセットアップ
winget configure dev-environment.dsc.yaml
# 構成の検証のみ実行(適用はしない)
winget configure <YAMLファイル> --validate-only
# 構成の適用時に対話的な確認をスキップ
winget configure <YAMLファイル> --accept-configuration-agreements
実用的なワンライナー例
以下はコピペで使える便利なワンライナーコマンドです。
開発環境のセットアップ
# 基本的な開発環境を一括インストール
winget install -e --id Microsoft.VisualStudioCode && winget install -e --id Git.Git && winget install -e --id OpenJS.NodeJS.LTS && winget install -e --id Microsoft.WindowsTerminal
一般的なアプリケーションの一括インストール
# 一般的なアプリの一括インストール
winget install -e --id Mozilla.Firefox && winget install -e --id Google.Chrome && winget install -e --id 7zip.7zip && winget install -e --id VideoLAN.VLC && winget install -e --id Adobe.Acrobat.Reader.64-bit
PowerShellの最新化
# PowerShell最新版をインストール
winget install -e --id Microsoft.PowerShell
すべてのMicrosoft製アプリを更新
# Microsoft製アプリをすべて更新
winget upgrade --query Microsoft --include-unknown
インストール済みアプリの定期メンテナンス
# アプリの一括アップデートとPowerShell更新スクリプト
winget upgrade --all --include-unknown > update_log.txt; Get-Content update_log.txt
YAML構成ファイルの例
基本的な開発環境セットアップ
# dev-setup.dsc.yaml
properties:
resources:
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: VSCode
properties:
id: Microsoft.VisualStudioCode
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: Git
properties:
id: Git.Git
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: Node
properties:
id: OpenJS.NodeJS.LTS
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: Terminal
properties:
id: Microsoft.WindowsTerminal
source: winget
トラブルシューティング
一般的なエラーと解決方法
-
ソースの更新失敗:
winget source update
を実行してソースを更新します。 -
インストール時のエラー:
--force
オプションを試すか、管理者権限で実行します。 -
パッケージが見つからない: 正確なIDを確認するため
winget search -e <パッケージ名>
を使用します。 - ハングする場合: ネットワーク接続を確認し、プロキシ設定を見直します。
インストールの競合の解決
# 競合するインストールを強制的に上書き
winget install -e --id <パッケージID> --force
# 既存のインストールをまず削除してから再インストール
winget uninstall -e --id <パッケージID> && winget install -e --id <パッケージID>
参考リンク
まとめ
wingetは、Windowsユーザーにとって強力なパッケージ管理ツールです。このチートシートを活用して、コマンドラインから効率的に環境構築や管理を行いましょう。新機能も随時追加されているので、定期的に winget -v
で最新バージョンを確認することをお勧めします。
もし記事が役立ったら、ぜひ「いいね」やコメントをいただけると嬉しいです。質問や追加したいコマンドがあれば、コメント欄でお知らせください!