Windowsのパッケージマネージャー wingetについて

Windowsのパッケージマネージャーといえば、有志によって提供されているChocolateyやScoopなどが有名かと思いますが。

wingetについては、マイクロソフトが提供しているパッケージマネージャーになります。

マイクロソフトが展開するパッケージマネージャーと聞くと過去に`PackageManagement（旧称OneGet）`がありますが、こちらはあまり広まっていく事なく2023年現在は下記のようなアナウンスがでています。

以下、[Announcement](https://github.com/OneGet/oneget#announcement)より引用

>Announcement
This module is currently not in development. We are no longer accepting any pull requests to this repository. OneGet is in a stable state and is expected to recieve only high-priority bug fixes from Microsoft in the future.

If you have a question, or are seeing an unexpected behavior from this module please open up an issue in this repository.

wingetについては、2020年にプレビュー版が提供開始された際に。
これもOneGetみたいになってしまうのか？　とは個人的に思いましたが、今のところ順調に発展しているような気はします。

本記事は、wingetについて基本的な使い方について紹介します。

## ドキュメント

[Windows パッケージ マネージャー](https://learn.microsoft.com/ja-jp/windows/package-manager/)

[winget ツールを使用したアプリケーションのインストールと管理](https://learn.microsoft.com/ja-jp/windows/package-manager/winget/)

## 環境

Windows 11 22H2


## Wingetをインストールする

[winget をインストールする](https://learn.microsoft.com/ja-jp/windows/package-manager/winget/#install-winget)

2023年11月現在、Windows 11にデフォルトではwingetはインストールされていません。

このため、wingetを利用するにはwingetをインストールする必要があります。

[アプリ インストーラーは Microsoft Store から取得](https://www.microsoft.com/p/app-installer/9nblggh4nns1#activetab=pivot:overviewtab)

ドキュメントに記載のあるようにマイクロソフトストアでアプリ　インストーラーという名称で配布されているため、こちらからインストールするのが簡単かと思います。

## 管理者に関する考慮事項

[管理者に関する考慮事項](https://learn.microsoft.com/ja-jp/windows/package-manager/winget/#administrator-considerations)

ドキュメントにあるように、管理者実行されていないターミナルでwingetを実行していると、インストールするソフトによっては昇格を求められることがあります。

作業PCの移行等で大量にパッケージをインストールするときなどは毎回、昇格をしていたら面倒なので管理者で実行するのが便利な場合はあるかと思います。

## アプリを探す

[search コマンド](https://learn.microsoft.com/ja-jp/windows/package-manager/winget/search)

seachコマンドを利用してアプリを検索する事ができます。

`winget serach アプリ名`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/a2e91412-445a-ffe5-f8d3-90841f360c55.png)

インストールしたいアプリがみつかったらIDを控えておきます。
（上記画像の場合は、AmazonAWSCLI）

## アプリのインストール

[install](https://learn.microsoft.com/ja-jp/windows/package-manager/winget/install)

下記コマンドではinstallコマンドにidオプションをつけて、インストールします。
またeオプションをつけて大文字小文字の区別をつけるようにしています。

```powershell
winget install -e -id Amazon.AWSCLI
```

名前で検索してインストールする方法もありますが、idで指定する方法が誤って違うアプリをインストールする事が少ないと思うので、基本的にはidオプションをつかってインストールするのがいいかと思います。

## アプリのアップグレード

[upgrade](https://learn.microsoft.com/ja-jp/windows/package-manager/winget/upgrade)

`winget upgrade`でアップグレードがあるアプリの一覧を出力してくれます。

`winget upgrade --all`ですべて適用し、`winget upgrade --id <id>`でid指定でアップグレード対象を指定してアップグレードできます。　またeオプションを指定するとidの大文字小文字も区別するようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/88924933-9e15-8dc1-5bde-987fa925465a.png)

## 端末にインストールされているアプリの一覧を取得

[list](https://learn.microsoft.com/ja-jp/windows/package-manager/winget/list)

listコマンドでは端末にインストールされているアプリの一覧を取得できます。

ドキュメントにも記載されていますが。

>Windows パッケージ マネージャーによってインストールされたアプリだけでなく、他の方法でインストールされたアプリも表示されます。

という点は理解しておいた方がよいでしょう。

## infoコマンド

[info](https://learn.microsoft.com/ja-jp/windows/package-manager/winget/info)

`winget info`コマンドではログの場所だったり、インストールに使用するディレクトリについて情報が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/5516a5d7-20a1-eb72-0b30-5d060f1a0175.png)

## インストールパスについて

[Display the path to an installed package](https://github.com/microsoft/winget-cli/issues/2298)

上記で言及されていますが、いろいろな動作があり現状、インストール先のパスについて簡単に取得する機能は提供されていません。

winget infoで表示されたパスだったりを探したり検索する必要があります。

## 総評

wingetが登場した時には、これが市民権を得られるのか心配していましたが。
今現在は便利に利用できる世の中になってきています。