アプリのインストールや更新をコマンドでサクっと実行「winget」の使い方:Windows 10 The Latest
Microsoftが開発していたパッケージマネジャー「winget」が正式リリースされた。wingetを使うことで、アプリやツールがコマンドで簡単にインストール可能になるため、スクリプトで同じ環境をすぐに再現できるようになる。wingetのインストールから簡単な使い方までを紹介しよう。
wingetによりコマンドラインによるアプリの管理が可能に
Microsoftが開発していたパッケージマネジャー「winget」が正式リリースされた。wingetを使うことで、コマンドラインでさまざまなアプリをインストールしたり、バージョンアップしたりできるようになる。今回は、wingetのインストール方法から基本的な使い方までを紹介する。
スマートフォンを買い換えても、同じOS(iOSからiOS、AndroidからAndroid)ならば、初期設定時のウィザードで、設定やアプリなどが前のスマートフォンと同じになり、すぐに使うことができる。
ところが、新しいWindows 10 PCを購入したり、Windows 10の初期化を行ったりすると、Windows 10の設定やアプリのインストールが必要になる。Windows 10も、Microsoftアカウントで同期すれば、設定のかなりの部分が前のPCと同じにできるが、アプリのインストールは個別に行わなければならない。
アプリごとにWebブラウザで配布先を開き、ダウンロードしてインストールしなければならず、この作業は意外と面倒だ。そのため、アプリのインストーラーをオンラインストレージに全て保存しておき、新しいPCにはそこからインストールするという運用を行っている人もいるのではないだろうか。ただ、その場合でもアプリがバージョンアップしてしまうと、個別にアップデートしたり、場合によっては再インストールが必要であったりと、二度手間になってしまうこともある。
こうした手間を省くものとして、「パッケージマネジャー(パッケージ管理システム)」と呼ばれるツールがある。インストールしたいアプリやツールを並べたスクリプトを用意しておき、これ実行することで自動的に環境構築を行うというものだ。事前にスクリプトを作る手間はかかるものの、いちいち配布先からパッケージをダウンロードしてインストールするよりも手早く環境構築が行える。特に会社などでは、スクリプトを1つ書いておき、それを実行するだけで大量のPCに同じ環境が構築できるというメリットがある。
これまでも、こうしたパッケージマネジャーはWindows OS向けにも提供されていたが、サードパーティー製ということもあり、なかなか一般的になっていなかった。今回、Microsoftが開発した「Windows Package Manager(winget)」がv1.0となり、正式に提供開始となったことで、この状況も変わってくるかもしれない。
wingetを使ったアプリの管理例
wingetを使うことで、コマンドラインでアプリをインストールしたり、バージョンアップしたりできる。異なるベンダーのアプリであっても一括管理できるので、初期設定などが非常に楽になる。
wingetについては、既にWindows 10 The Latest「Windows環境再構築をコマンドラインで自動化可能にするMicrosoft製ツール『winget』とは」でβ版を紹介しているので、ここでは簡単に正式版での変更点や簡単な使い方を紹介する。
wingetのインストール方法
wingetは、Microsoft StoreまたはGitHubからインストールが行える。Microsoft Storeからインストールした場合は、最新版がリリースされると自動的に更新される。一方、GitHubからインストールした場合は、常に最新版を自分でダウンロードして更新していく必要がある。
Microsoft Storeからインストールするのが簡単でメンテナンスも容易だが、何らかの理由でバージョンを固定して使いたいといった場合はGitHubからインストールするとよい。
GitHubからインストールした後、Microsoft Store版に変更したい場合は、GitHub版をアンインストールする必要がある(後述)。
Microsoft Storeでwingetをインストールする
Microsoft Storeを起動し、[検索]アイコンをクリックし、検索ボックスに「アプリ インストーラー」と入力する。検索ボックスの下にサジェスチョンとして「アプリ インストーラー」が表示されるので、これをクリックする。原稿執筆時点では、ここで検索を行っても検索結果が「次の条件では該当する結果が見つかりません」と表示され、「winget」は表示されない。サジェスチョンの「アプリ インストーラー」をクリックして[アプリ インストーラー]画面を開き、ここからインストールを行うこと。
Microsoft Storeでwingetをインストールする(1)
Microsoft Storeを起動し、検索ボックスに「アプリ インストーラー」と入力する。検索ボックスの下にサジェスチョンとして「アプリ インストーラー」が表示されるので、これをクリックする。
上記の「アプリ インストーラー」の画面で「この製品はインストール済みです。」と表示され、かつコマンドプロンプトで「winget -v」を実行すると、v1.0未満のバージョン番号が表示されたら、プレビュー版(β版)がインストール済みである。その場合、後述の「既にプレビュー版をインストールしている場合」を参照して、正式版をインストールしてほしい。
wingetがインストール済みの場合はバージョンを確認する
プレビュー版(β版)がインストール済みだと、このようにv1.0未満のバージョン番号や「プレビュー」が表示される。その場合、後述の方法で正式版をインストールする。
さて、インストールが完了しても、[スタート]メニューには登録されないので注意してほしい。インストールされたかどうかは、コマンドプロンプトを起動し、「winget」を実行してみればよい。wingetのヘルプが表示されたら、インストールは正常に行われている。
また、[Windowsの設定]アプリを起動し、[アプリ]−[アプリと機能]画面を開き、「アプリと機能」欄の[アプリ実行エイリアス]リンクをクリックして開く、[アプリ実行エイリアス]画面に「Windows Package Manager Client」が登録されているかどうかで確認できる。
wingetがインストールされていることを確認する(2)
[アプリ実行エイリアス]画面が開いたら、「Windows Package Manager Client(winget.exe)」が登録されていることを確認する。
GitHubからwingetをインストールする
WebブラウザでGitHubの「microsoft/winget-cli」を開き、右ペインの「Releases」の「Windows Package Manager <バージョン番号>」をクリックする。[Windows Package Manager <バージョン番号>]画面が開くので、画面の下の方にある「Assets」の[Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.appxbundle]リンクをクリックする。パッケージのダウンロードが行えるので、これを実行すればインストールが行える。
GitHubからwingetをインストールする(1)
WebブラウザでGitHubの「microsoft/winget-cli」リポジトリを開き、右ペインの「Releases」欄下の[Windows Package…]リンクをクリックする。
GitHubからwingetをインストールする(3)
「Assets」欄の[Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.appxbundle]リンクをクリックする。
既にプレビュー版をインストールしている場合
wingetは、[スタート]メニューやコントロールパネルの[プログラムと機能]に表示されないため、GUIを使ってアンインストールが行えない。
GitHubからプレビュー版をダウンロードしてインストールしている場合は、GitHubから正式版をダウンロードしてインストールするか、PowerShell 5.xで以下のコマンドレットを実行して事前にアンインストールした後、Microsoft Storeからインストールを行う必要がある。
Get-AppxPackage *Microsoft.DesktopAppInstaller* | Remove-AppxPackage
wingetをアンインストールする
wingetをアンインストールするには、PowerShellで上記のコマンドを実行する必要がある。ただし、wingetをアンインストールすると、「.appxbundle」ファイルの関連付けも削除されてしまうので注意してほしい。
PowerShell 7.xの場合、上記のコマンドレットを実行すると、Appxモジュールをロードできないというエラーが発生する。その場合、[スタート]メニューにある「Windows PowerShell」(こちらがPowerShell 5.x)を選んで起動し、上記コマンドレットを実行すること。
なお、wingetをアンインストールすると、「.appxbundle」ファイルの関連付けも削除されてしまい、GitHubからパッケージをダウンロードしてインストールすることができなくなるので注意してほしい(Microsoft Storeからwingetをインストールすれば、関連付けが復活する)。
wingetの使い方
wingetは、アプリのインストールなどをスクリプトやバッチで一括して行う用途を想定しているため、コマンドラインで操作を行う。
wingetのコマンドラインは以下の書式を使う。
winget [<サブコマンド>] [<サブコマンドオプション>]
wingetは、引数を何も付けずに実行するとオンラインヘルプを表示するので、サブコマンドが分からなくなったら、wingetのみを実行すればよい。
サブコマンド | 説明 |
---|---|
-v/--version | wingetのバージョンを表示 |
--info | wingetの情報を表示 |
install | 指定されたパッケージをインストール |
show | パッケージに関する情報を表示 |
source | パッケージのソースの管理 |
search | アプリの基本情報を見つけて表示 |
list | インストール済みパッケージを表示 |
upgrade | 指定されたパッケージをアップグレード |
uninstall | 指定されたパッケージをアンインストール |
hash | インストーラーファイルをハッシュするヘルパー |
validate | マニフェストファイルを検証 |
settings | 設定(settings.josnファイル)を開く |
features | 試験的な機能の状態を表示 |
export | インストールされているパッケージのリストをエクスポート |
import | ファイル中の全てのパッケージをインストール |
wingetのサブコマンド |
wingetのサブコマンドには、さらに特有のオプション指定が必要になる。詳細は、Windows 10 The Latest「Windows環境再構築をコマンドラインで自動化可能にするMicrosoft製ツール『winget』とは」を参照してほしい。以下では、よく使う基本的なサブコマンドを紹介する。
wingetでアプリをインストールする
wingetでアプリをインストールするには、どのようなアプリがリポジトリ(配布元)に登録されているのかを確認する必要がある。
それには、以下のコマンドを実行する。
winget show > C:\Temp\wingetlist.txt
「show」サブコマンドでアプリの一覧を取得し、それを「C:\Temp\wingetlist.txt」に出力している。ファイルに出力するのは、リストが長く、コマンドプロンプト上でインストールしたいアプリが登録されているのかどうかを確認するのが難しいからだ。そのため、テキストファイルに出力してから、テキストエディタなどで検索する方がよいだろう。なお、出力されたテキストファイルの文字コードはUTF-8になっている。
インストールしたいアプリが見つかったら、以下のコマンドを実行する。ここでは「Visual Studio Code」をインストールする例を示す。
winget install -h Microsoft.VisualStudioCode
「install」サブコマンドでインストールを指示し、「-h」オプションでサイレントインストールを指定する。Visual Studio Codeをインストールする場合、「show」サブコマンドで出力したファイルで「Visual Studio」を検索して、Visual Studio CodeのID(Microsoft.VisualStudioCode)を得る。
同様にインストールしたいアプリを探し、上記と同様にインストール用のコマンドラインを用意し、一括インストール用のバッチファイルに追記していけばよい(詳細は後述)。
なお、アプリによってはインストール時に管理者権限が必要なものがある。そうしたアプリをwingetでインストールする場合には、管理者権限で起動したコマンドプロンプトでwinget installのコマンドラインを実行すること。
wingetでアプリをバージョンアップする
wingetを使ってアプリをバージョンアップすることも可能だ。単に「upgrade」サブコマンドを付けて実行すると、wingetでバージョンアップ可能なアプリの一覧を取得できる。
winget upgrade
winget upgradeでバージョンアップ可能なアプリの一覧を取得する
「winget upgrade」を実行すると、インストールされているアプリが検索され、新しいバージョンが提供されているアプリの一覧が表示される。
リストには、現在インストールされているバージョンと利用可能なバージョンが表示されるので、バージョンアップしたい場合は、以下のように「-h」オプションとともにIDを指定すれば、サイレントインストールでバージョンアップが行える(「--all」オプションで全てのアプリをバージョンアップすることも可能)。
winget upgrade -h zoom.zoom
winget経由ではなく、別の方法でインストールされたアプリについても、wingetは検索してアップグレード可能なら一覧に表示してくれる。もちろん、そうしたアプリはwingetでのアップグレードも可能だ。
wingetでアプリをアンインストールする
不要にあったアプリをアンインストールすることも可能だ。それには、wingetでアンインストール可能なアプリの一覧(インストール済みのアプリ)を得る必要がある。
winget list > C:\Temp\wingetuninstall.txt
「list」サブコマンドでインストール済みのアプリの一覧を取得し、これを「C:\Temp\wingetuninstall.txt」に出力している。これも長いリストが出力されるのでテキストファイルに出力して確認した方がよい。また、テキストファイルに出力すれば、IDをコピー&ペーストで指定できるので楽だ。
例えば、zoomアプリをアンインストールするのであれば、以下のように指定する。
winget uninstall -h zoom.zoom
これでサイレントモードによるアンインストールが行える。
1603エラーが発生した場合の対処方法
wingetを使ってアプリをインストール/アンインストールしようとした際、エラー番号「1603」が出力された場合、コマンドプロンプトを管理者権限で起動して実行してみると解決することが多い。
アプリを自動インストールするバッチファイルを作成する
新しいPCを購入した際のアプリのインストールを楽にするため、現在運用しているWindows 10上にインストールされているアプリのうち、wingetでインストール可能なものをバッチファイルにしておくとよい。それには、「winget list」でインストール済みのアプリの一覧を取得して、このリストの中でwingetのIDが付けられているものを探し、以下のようにバッチファイルにする。
ただ、「list」サブコマンドでIDが表示されたものが、全てリポジトリに登録されているわけではないので、「show」サブコマンドで出力したリストを検索して、そのアプリが登録されているか確認すること。
echo off
winget install -h 7zip.7zip
winget install -h zoom.zoom
winget install -h google.chrome
winget install -h Google.DriveFileStream
winget install -h SlackTechnologies.Slack
winget install -h Mozilla.Firefox
winget install -h Mozilla.Thunderbird
winget install -h Microsoft.VisualStudioCode
echo on
echo offにすると、全ての出力が非表示になるので、テストの際はecho offを外して実行に問題がないかどうか確認するとよい。
Microsoft Storeもダウンロード元の対象にする
原稿執筆時点では、「winget」リポジトリのみが対象となっているが、実験的機能の設定でMicrosoft Storeアプリ(「msstore」リポジトリ)を対象にすることもできる。例えば、Windows Terminalは、「winget」リポジトリと「msstore」リポジトリに登録されており、どちらからでもインストールが行える。「msstore」リポジトリからインストールすると、Microsoft Storeによる自動更新機能の対象となる。そのため、常に最新版を利用したい場合は、「msstore」リポジトリからインストールした方がよい。
まず、「msstore」リポジトリを有効にしよう。それにはまず、「winget settings」を実行し、設定ファイルである「settings.json」ファイルを開く。初めてjsonファイルを開く場合は、「メモ帳」アプリなどに関連付けを行って開くとよい。
「settings.json」ファイルの編集画面が表示されたら、以下のリストのように、「// },」と「}」の間に「"experimentalFeatures": { "experimentalMSStore":true }, 」を追記すればよい。「settings.json」ファイルに上書き保存すれば、「msstore」リポジトリが有効になる。
{
"$schema": "https://aka.ms/winget-settings.schema.json",
// For documentation on these settings, see: https://aka.ms/winget-settings
// "source": {
// "autoUpdateIntervalInMinutes": 5
// },
"experimentalFeatures": {
"experimentalMSStore": true
},
}
緑色の部分を追記して、「msstore」リポジトリを有効にする
「msstore」リポジトリを追加する
実験的機能を有効にして、Microsoft Storeからのインストールを可能にする。それには、「winget settings」を実行し、「Settings.json」ファイルを開き、「"experimentalFeatures": { "experimentalMSStore":true } 」を追記する。
次に、「msstore」リポジトリを指定して、「Windows Terminal」をインストールしてみよう。「install」サブコマンドに続いて、「--source msstore」とオプションを指定することで、「msstore」リポジトリからインストールが行える。
winget install --source msstore Microsoft.WindowsTerminal
wingetには、ここで取り上げた他にもさまざまな機能がある。wingetを使いこなすことで、アプリのインストールが容易になるはずだ。ただ、現時点では登録されているアプリの数が十分とはいえず、まだ手動でインストールしなければならないものも多い。wingetが普及すれば、多くのアプリが登録されるようになり、wingetを使ったアプリの管理がより便利になると思われる。特に管理者は、wingetの使い方を勉強しておくと、クライアントPCの管理が楽になるだろう。
Copyright© Digital Advantage Corp. All Rights Reserved.