Post

winget はいいぞ。 (Windows のアプリ管理を楽にする話)

Windows でソフトをインストールする方法といえば、ブラウザで公式サイトなどから exe ファイルなどのインストーラーを落としてきて、それを開いてインストールメニューの画面をぽちぽちするのが一般的だとおもう。

これのめんどくさいところは、

  • ソフトごとに公式サイトを巡る必要がある
  • 広告や偽ボタンなどが煩わしいことがある
  • 更新があるとソフトごとに確認していかなければならない など。

また、特に新しく PC をセットアップするときに、必要なソフトが大量にあるとこれを何度も繰り返す必要がある。 気づけばダウンロードフォルダには大量のインストーラーが……なんてことはこれまで自分も何度も繰り返してきた。

ここで紹介するのは「パッケージマネージャー」という考え方でのアプリ管理の方法だ。 Windows でのアプリ管理なら winget というパッケージマネージャーがある。

Linux なら apt など、Mac なら Homebrew がこれにあたる。 (よくチュートリアル記事とかで sudo apt upgrade とかコマンドを打つやつ)

ちなみに Windows には古くから Chocolatey というパッケージマネージャーもある。 こちらもオープンソースコミュニティで広く普及してきたものだが、winget は Microsoft 公式で OS に標準で搭載されていることがメリットか。

できること

winget でできることはこんな感じ。

  • アプリのインストール
    • 複数のアプリをまとめてインストールもできる
  • アプリのアンインストール
  • アプリの更新
  • インストール済みアプリの一覧表示

要するに「アプリ管理をすべてコマンドで再現可能にできる」のが winget の強み。

黒い画面でキーボードだけで完結するからね、マウスを使わずにパッとできるととても楽。

winget をつかうときは管理者権限で起動したターミナル上でコマンドを実行するのをおすすめする。 (Linux とかで sudo でコマンドを実行するのと似たようなもの)

標準の権限でコマンドを実行すると、ソフトのインストール時に UAC の確認画面が出てくるため、ソフトをまとめてインストールしたりアップデートしたりするとその度に確認を求められて不便なので。

Windows キー + R キー で出てくる窓に cmd を入力してから Ctrl + Shift + Enter を押すことで「管理者権限でのコマンドプロンプト」を開くことができる。

alt text

たとえばアプリのインストールをしたいときは

1
winget install Google.Chrome

同名のアプリがたくさんあると ID で指定しろと言われるので、そういうときは winget search キーワード で ID を調べよう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\Windows\System32>winget search discord
名前                       ID                           バージョン                   一致                       ソース
-----------------------------------------------------------------------------------------------------------------------
Discord                    XPDC2RH70K22MN               Unknown                                                 msstore
Discord                    Discord.Discord              1.0.9219                     ProductCode: discord       winget
Discord                    Discord.Discord.x86          1.0.9059                                                winget
Beeper                     Beeper.Beeper                4.2.367                      Tag: discord               winget
...
Legcord                    smartfrigde.Legcord          1.1.6                        Tag: discord               winget
Suside                     zeankundev.suside            2.3.3                        Tag: discord               winget
Discord Canary             Discord.Discord.Canary       1.0.794                                                 winget
Discord Canary             Discord.Discord.Canary.x86   1.0.328                                                 winget
Discord Development        Discord.Discord.Development  1.0.953                                                 winget
Discord Development        Discord.Discord.Development… 1.0.771                                                 winget
Discord PTB                Discord.Discord.PTB          1.0.1172                                                winget
Discord PTB                Discord.Discord.PTB.x86      1.0.1090                                                winget
BetterDiscordAutoInstaller Zwylair.BetterDiscordAutoIn… 1.5.0                                                   winget
CSAuto                     MurkyYT.CSAuto               2.2.3                        Tag: discord-rich-presence winget

この場合だと、おそらくみんなが欲しい Discord アプリの ID は Discord.Discord になる。 逆にいえば ID じゃなくて名前でも (被りがなければ) インストールできる。

アップデートがあるか確認したいときは

1
winget update

アプデ可能なものが一覧で出てくる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
C:\Windows\System32>winget update
名前                          ID                                    バージョン           利用可能            ソース
-------------------------------------------------------------------------------------------------------------------
Git                           Git.Git                               2.51.2               2.52.0              winget
Mozilla Firefox (x64 ja)      Mozilla.Firefox.ja                    145.0                145.0.2             winget
WizTree v4.27                 AntibodySoftware.WizTree              4.27                 4.28                winget
NDI 6 Tools                   NDI.NDITools                          6.0.1.0              6.2.1.0             winget
Tailscale                     Tailscale.Tailscale                   1.90.6               1.90.8              winget
Blender                       BlenderFoundation.Blender             4.5.3                5.0.0               winget
OBS Studio                    OBSProject.OBSStudio                  32.0.1               32.0.2              winget
Parsec                        Parsec.Parsec                         150-99               150.101.0.0         winget
Visual Studio Community 2022  Microsoft.VisualStudio.2022.Community 17.14.18             17.14.21            winget
Epic Games Launcher           EpicGames.EpicGamesLauncher           1.3.128.0            1.3.161.0           winget
SD Card Formatter             SDAssociation.SDMemoryCardFormatter   5.0.2                5.0.3               winget
GitHub Desktop                GitHub.GitHubDesktop                  3.5.3                3.5.4               winget
Obsidian                      Obsidian.Obsidian                     1.9.14               1.10.3              winget
Slack                         SlackTechnologies.Slack               4.47.59              4.47.65             winget
NVIDIA GeForce NOW 2.0.70.167 Nvidia.GeForceNow                     2.0.70.167           2.0.79.166          winget
Microsoft Teams               Microsoft.Teams                       25275.2601.4002.2815 25306.804.4102.7193 winget
15 アップグレードを利用できます。

次のパッケージにはアップグレードを適用可能ですが、アップグレードには明示的対象化が必要です:
名前    ID                    バージョン 利用可能 ソース
--------------------------------------------------------
Zotero  DigitalScholar.Zotero 7.0.24     7.0.30   winget
Discord Discord.Discord       1.0.9017   1.0.9216 winget

これらをまとめてアップデートするなら

1
winget upgrade --all

また、入っているアプリを一覧で見たいなら

1
winget list

これを JSON ファイルとして書き出すことができる。

1
winget export -o winget-packages.json

ひとつ注意があるとすれば、winget に対応していないソフトがたまにあるので、それらはリストに書き出されない。仕方ないので手動でインストーラーを落としてこよう。

書き出した JSON ファイルがあれば、他の PC でまとめてインストールするときに便利。

1
winget import -i winget-packages.json

基本的にはこれくらい覚えていればだいたいできる。

気になったらいろいろ調べてみよう。

まとめ

コマンドだけでアプリ管理ができる winget をつかおう。

This post is licensed under CC BY 4.0 by the author.

Trending Tags