Cover Image for Windowsのパッケージマネージャは winget がオススメです!
Windowsのパッケージマネージャは winget がオススメです!

概要

今回の記事では、Windowsのパッケージマネージャであるwingetを丁寧に解説します。

これまでWindowsのパッケージマネージャは、「chocolatey 」や「scoop」がありました。

Macのbrewのような公式のパッケージマネージャはなかったが、ついに マイクロソフト公式のパッケージマネージャ「winget」 が2020年6月30日に初回リリースされました。

とても良さそうだったので、記事にまとめました。
Windowsパッケージマネージャwingetを学んでいきましょう。

wingetを使ってソフトのインストール、更新(アップグレード)、削除(アンインストール)など について学ぶことができます。

前提条件

  • Windows 10 1709 (ビルド 16299) 以降のOSであること

目的(ゴール)

今回の記事では、Windows公式のパッケージマネージャ winget を使って node.js などをインストールしたりする方法について学びます。

メリット

wingetを使えるようになると、

  • ソフトをコマンドラインでインストールできるため、インストール手順書などを作るときにいちいち画面キャプチャを取得する必要がなくなる。
  • 複数のパソコンにソフトをインストールする手間が減る。(パソコンの引っ越しも容易になる)
  • コマンドラインでインストールできるのでバッチ処理もできる。

など、パソコンの環境構築がラクになります。

目次

内容

winget のよく使いそうな操作を丁寧に解説します。
今回は題材としてnodejsをと取り扱います。

より詳しい内容は下記の公式サイトを参考にしてみてください。

コマンドプロンプトを開く

今回はコマンドプロンプト(cmd)を使用します。
cmd

管理者として実行すると余計なダイアログが表示されなくてすみます。

wingetのコマンドが使用できるか確認

wingetのバージョンが確認できればOKです。

コマンドプロンプト
C:\Windows\system32>winget -v
v1.3.2091

万一 wingetコマンドが使用できない場合は、Microsoft Store からwingetをインストールしましょう。

インストールするソフトを探す

さっそく、nodejsを探してみます。インストールしたいソフトの検索はsearchコマンドを使用します。

searchコマンド実行

コマンドプロンプト
winget search nodejs

searchコマンド実行結果

予想以上に検索結果が表示されましたが、公式のNode.jsは下記の3つだと思われます。

  • Node.js LTS 16.16.0 (推奨版)
  • Node.js 18.7.0 (最新版)
  • Node.js Nightly 19.0.0 (開発中版)
コマンドプロンプト
名前                  ID                        バージョン   一致            ソース
-----------------------------------------------------------------------------------
Node.js               OpenJS.NodeJS             18.7.0       Moniker: nodejs winget
Volta                 Volta.Volta               1.0.8        Tag: nodejs     winget
微信开发者工具        Tencent.wechat-devtool    1.05.2108130 Tag: nodejs     winget
QQ小程序开发者工具    Tencent.qq-devtool        0.5.5-beta.5 Tag: nodejs     winget
pnpm 7                pnpm.pnpm.7               7.9.5        Tag: nodejs     winget
pnpm 6                pnpm.pnpm.6               6.34.0       Tag: nodejs     winget
Node.js Nightly       OpenJS.NodeJS.Nightly     19.0.0       Tag: nodejs     winget
Node.js LTS           OpenJS.NodeJS.LTS         16.16.0      Tag: nodejs     winget
RunJS                 lukehaas.RunJS            2.5.1        Tag: nodejs     winget
Laragon               LeNgocKhoa.Laragon        5.0.0.210523 Tag: nodejs     winget
Open Video Downloader jely2002.youtube-dl-gui   2.4.0        Tag: nodejs     winget
NVM for Windows       CoreyButler.NVMforWindows 1.1.9        Tag: nodejs     winget
CodeLite              CodeLite.CodeLite         15.0.0       Tag: nodejs     winget

下記が表示された場合は内容を確認した上で、"Y"を入力し同意しましょう。

コマンドプロンプト
> C:\Windows\system32>winget search nodejs
> 'msstore' ソースを使用するには、使用する前に次の契約を表示する必要があります。
> Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
> ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")> 
> すべてのソース契約条件に同意しますか?
> [Y] はい  [N] いいえ:

ソフトをインストールする

今回は Node.js LTS(推奨版)をバージョン指定(16.15.0)でインストールします。installコマンドを使用します。

installコマンド実行

コマンドプロンプト
winget install "Node.js LTS" -v 16.15.0

今回の Node.js LTS のように空白がある場合は”(ダブルクォート)で囲みましょう。

バージョン(-v)を指定しない場合、最新バージョンがインストールされます。

installコマンド実行結果

「インストールが完了しました」と表示されればOKです。

コマンドプロンプト
C:\Windows\system32>winget install "Node.js LTS" -v 16.15.0
見つかりました Node.js LTS [OpenJS.NodeJS.LTS] バージョン 16.15.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://nodejs.org/dist/v16.15.0/node-v16.15.0-x64.msi
  ██████████████████████████████  27.2 MB / 27.2 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

listコマンド実行

インストールされた Node.js LTS v16.15.0(推奨版)を確認します。listコマンドを使用します。

コマンドプロンプト
winget list "Node.js LTS"

listコマンド実行結果

Node.js LTS 16.15.0 がインストールされていることが確認できます。

コマンドプロンプト
C:\Windows\system32>winget list "Node.js LTS"
名前    ID                バージョン 利用可能 ソース
----------------------------------------------------
Node.js OpenJS.NodeJS.LTS 16.15.0    16.16.0  winget

利用可能(バージョン)を確認すると v16.16.0 とあり、更新(アップグレード)できることがわかります。

ソフトを更新(アップグレード)する

インストールされた Node.js LTS v16.15.0(推奨版)をv16.16.0 に更新(アップグレード)します。upgradeコマンドを使用します。

upgradeコマンド実行

コマンドプロンプト
winget upgrade "Node.js LTS"

upgradeコマンド実行結果

Node.js LTS 16.16.0 でインストールされている(更新されている)ことが確認できます。

コマンドプロンプト
C:\Windows\system32>winget upgrade "Node.js LTS"
見つかりました Node.js LTS [OpenJS.NodeJS.LTS] バージョン 16.16.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://nodejs.org/dist/v16.16.0/node-v16.16.0-x64.msi
  ██████████████████████████████  27.2 MB / 27.2 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

ソフトを削除(アンインストール)する

Node.js LTS 16.16.0 を削除(アンインストール)します。uninstallコマンドを使用します。

uninstallコマンド実行

コマンドプロンプト
winget uninstall "Node.js LTS"

uninstallコマンド実行結果

「正常にアンインストールされました」と表示されればOKです。

コマンドプロンプト
C:\Windows\system32>winget uninstall "Node.js LTS"
見つかりました Node.js LTS [OpenJS.NodeJS.LTS]
パッケージのアンインストールを開始しています...
正常にアンインストールされました

ソフトを一括でインストールする

  1. 一括でインストールするソフトウェアの情報をJSONファイルの雛形をexportコマンドで取得します。
  2. 取得した雛形ファイルを編集し、一括でインストールしたいソフトの情報(ここではNode.jsWindowsTerminalの2つ)を記載します。

exportコマンド実行

インストールされたソフト(バージョン情報付き)のJSONファイル(winget-export.json)を取得します。

コマンドプロンプト
C:\Windows\system32>winget export -o winget-export.json --include-versions

exportコマンド実行結果

wingetでインストールしていないソフトは管理できないようですが、今回は気にせず進めます。

コマンドプロンプト
C:\Windows\system32>winget export -o winget-export.json --include-versions
インストールされているパッケージのバージョンは、どのソースからも利用できません: Notepad++ Editor
    ~ 省略 ~
インストールされているパッケージのバージョンは、どのソースからも利用できません: Amazon.NoSQLWorkbench 3.3.0

ソフト管理をwingetに統一したい場合は、対象のソフトをwingetで再インストールしましょう。

importコマンド実行

雛形ファイル(json)に指定したファイルを使用して、複数のソフト(ここでは2つ)をインストールしてみます。

雛形ファイルの編集

2取得した雛形ファイル(winget-export.json)を編集します。一括でインストールしたいソフトの情報(ここではNode.jsWindowsTerminalの2つ)を記載します。

winget-export.json
{
	"$schema" : "https://aka.ms/winget-packages.schema.2.0.json",
	"CreationDate" : "2022-08-28T00:18:55.941-00:00",
	"Sources" : 
	[
		{
			"Packages" : 
			[
				{
					"PackageIdentifier" : "Microsoft.WindowsTerminal",
					"Version" : "1.14.2281.0"
				},
				{
					"PackageIdentifier" : "OpenJS.NodeJS.LTS",
					"Version" : "16.16.0"
				}
			],
			"SourceDetails" : 
			{
				"Argument" : "https://cdn.winget.microsoft.com/cache",
				"Identifier" : "Microsoft.Winget.Source_8wekyb3d8bbwe",
				"Name" : "winget",
				"Type" : "Microsoft.PreIndexed.Package"
			}
		}
	],
	"WinGetVersion" : "1.3.2091"
}

importコマンド実行

コマンドプロンプト
C:\Windows\system32>winget import winget-export.json

importコマンド実行結果

Node.jsWindowsTerminalの2つがインストールされていることが確認できます。

コマンドプロンプト
C:\Windows\system32>winget import -i winget-export.json
(1/2) 見つかりました Windows Terminal [Microsoft.WindowsTerminal] バージョン 1.14.2281.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
  ██████████████████████████████  100%
インストールが完了しました

(2/2) 見つかりました Node.js LTS [OpenJS.NodeJS.LTS] バージョン 16.16.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://nodejs.org/dist/v16.16.0/node-v16.16.0-x64.msi
  ██████████████████████████████  27.2 MB / 27.2 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

まとめ

wingetはがいかがでしたか?
下記のコマンドを使用することにより、Windowsのソフトウェア管理も便利になったと思います。

  • winget search:インストールするソフトを探す
  • winget install:ソフトをインストールする
  • winget upgrade:ソフトを更新(アップグレード)する
  • winget uninstall:ソフトを削除(アンインストール)する
  • winget export | import:ソフトを一括でインストールする

wingetはマイクロソフト公式のパッケージマネージャなので、今後デファクトスタンダードになっていく可能性があり、今のうちから使い慣れておいて損はないと思います。

本記事を読んでいただきありがとうございまいた。
少しでもみなさまのお役に立てばうれしいです。

© 2022 k69

本サイトを通じて、たくさんの人がプログラミングに興味を持ち、 これがキッカケでモノづくりの楽しさに触れることができれば幸せです!