winget tips

# Windows Package Manager Client (winget)
Windows Package Managerは、Windows 10/11 にアプリケーションをインストールするためのコマンド ラインツール（winget）と一連のサービスで構成される。ここでは、wingetコマンドに関する使い方を説明する。

## How to Install winget
Windows 10 1809 (build 17763) 以降 or Windows 11で使用可能。
Microsoft Storeで`winget`で検索して、インストール。ただし下記のように`アプリインストーラー`という名前になっているので注意。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/b4a0cb28-4604-4e00-32ad-0c1d5a3b8e24.png)


これにwingetが入っているとわからなかった私は、Microsoft Storeからインストールできるようになってからも、[GitHubのRepo](https://github.com/microsoft/winget-cli/releases)から最新版をダウンロードしてインストールしていた・・・

## How to use winget
### Search Packages
インストールできるアプリケーションを検索する

```cmd
C:\>winget search Git
Name                             Id                                Version      Matched
---------------------------------------------------------------------------------------------------
Git                              Git.Git                           2.26.2
Logitech Harmony Remote          Logitech.Harmony                  1.0.1.308
GitHub Desktop                   GitHub.GitHubDesktop              2.5.0
GitHub CLI                       GitHub.cli                        0.8.0
Atom                             GitHub.Atom                       1.45.0
AdobeDigitalEditions             Adobe.AdobeDigitalEditions        4.5.11
MicrosoftGitCredentialManager... Microsoft.GitCredentialManager... 1.20.0
Git Large File Storage           GitHub.GitLFS                     2.11.0
Git Extensions                   GitExtensionsTeam.GitExtensions   3.3.1
MaxTo                            DigitalCreations.MaxTo            2.0.1
Gitter IM                        Gitlab.Gitter.IM                  4.1.0
GitKraken                        Axosoft.GitKraken                 7.0.0
TortoiseGit                      TortoiseGit.TortoiseGit           2.10.0.2
GitLFS                           Git.GitLFS                        2.11.0
NeoLoad                          Neotys.NeoLoad                    7.3          Moniker: neoloadgit
AppInstallerFileBuilder          Microsoft.AppInstallerFileBuilder 1.2020.211.0 Tag: GitHub
Sublime Merge                    SublimeHQ.SublimeMerge            1119         Tag: git
TortoiseSVN                      TortoiseSVN.TortoiseSVN           1.13.1       Tag: git
```

### Show Package Information
アプリケーションの詳細情報を表示。`-e`オプションで完全一致のアプリケーションを表示。

```cmd
C:\>winget show -e Git
Found Git [Git.Git]
Version: 2.26.2
Publisher: Git
Description: Git version control system.
Homepage: https://git-scm.com/
License: GNU General Public License, version 2
License Url: https://github.com/git-for-windows/git/blob/master/COPYING
Installer:
  SHA256: cdf76510979dace4d3f5368e2f55d4289c405e249399e7ed09049765489da6e8
  Download Url: https://github.com/git-for-windows/git/releases/download/v2.26.2.windows.1/Git-2.26.2-64-bit.exe
  Type: Inno
```
`--versions`オプションでインストール可能なバージョンを表示。

```cmd
C:\>winget show -e Git --versions
Found Git [Git.Git]
Version
--------
2.26.2
2.25.1
2.24.1.2
```

### Install Package
アプリケーションをインストール。`-v`オプションをつけなければ、最新版がインストールされる。

```cmd
winget install -e Git -v 2.25.1
```

### Upgrade Package
`upgrade`の後にパッケージ名を指定する。なお、パッケージ名を省略するとアップグレード可能なパッケージの一覧が表示される。

```cmd
winget upgrade -e "Windows Terminal"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/7aa68fa2-0330-3b31-587c-9c758217a811.png)

### Uninstall Package
`uninstall`の後にパッケージ名を指定する。なお、パッケージ名を省略するとUninstall可能なパッケージの一覧が表示される。

```cmd
winget uninstall Node.js
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/c123cff9-fd7d-78e1-1336-2498005e2e76.png)

### Export & Import Package
インストールされているパッケージのリストを`export`コマンドでファイルに出力し、出力したファイルに記載されているパッケージを`import`コマンドでインストールできる。PCを新規にセットアップするようなときに役に立つ。

```cmd
winget export -o packages.json
```
```cmd
winget import -i packages.json
```

### Update package list
利用可能なパッケージリストの更新。デフォルトで5分間隔でチェックするので、あえて実行する機会は無いかも。

```cmd
winget source update
```

## Settings
wingetの設定。まだ、設定できる項目は少しだけ。下記のコマンドを実行することで、`settings.json`ファイルをエディタで開く。

```cmd
winget settings
```

### Progress barの変更
`settings.json`に下記の設定を入れると、wingetコマンド実行時に表示されるプログレスバーの見た目を変更できる。

```json:settings.json
    "visual": {
        "progressBar": "rainbow" // accent(default)/retro/rainbow
    }
```
`rainbow`にするとこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/11602d14-1004-940e-4844-5a1c8e9fa929.png)

## Link
* [Windows パッケージ マネージャー ](https://docs.microsoft.com/ja-jp/windows/package-manager/)
    * ここを見れば一通りのことが書いてある。一度は見ておくとよい。
* [Windows Package Manager CLI (aka winget)](https://github.com/microsoft/winget-cli)
    * wingetのGitHub Repository。wingetのバイナリもダウンロード可能。
* [WinGet CLI Settings](https://github.com/microsoft/winget-cli/blob/master/doc/Settings.md)
    * 設定ファイル（settings.json）の説明。
* [Windows Command Line](https://devblogs.microsoft.com/commandline/)
    * wingetの最新情報はここでチェック。
* [Windows Wednesday - Let's talk Windows Package Manager](https://www.youtube.com/watch?v=7rBGVLsyc5w)
    * wingetに関して開発者が語っている動画。コマンドオプションの説明をしているので、参考に見てみると新しい発見があるかも。