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 を押すことで「管理者権限でのコマンドプロンプト」を開くことができる。
たとえばアプリのインストールをしたいときは
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 をつかおう。
