0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

弊社株式会社アイティードゥでは、これまで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 で最新バージョンを確認することをお勧めします。


もし記事が役立ったら、ぜひ「いいね」やコメントをいただけると嬉しいです。質問や追加したいコマンドがあれば、コメント欄でお知らせください!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?