IT技術に関するメモ(主にセキュリティ関連)

wingetを利用したソフトウェアインストール

本ブログ記事にはアフィリエイト広告を利用しています

遂にWindowsでもパッケージ管理システムが利用できるようになりました。
今回はそのwingetツールについて書きたいと思います。

パッケージ管理用wingetとは

wingetはWindows Package Managerサービス(パッケージ管理システム)を利用するクライアント インターフェイスです。
ソフトウェアのインストール、更新、削除等をおこなえ、UbuntuのaptやCentOSのyumのように利用できます。
マイクロソフトのドキュメントは「winget ツールを使用したアプリケーションのインストールと管理 | Microsoft Docs」にあります。

インストール

Microsoft Storeから入手するか、powershellを起動して「winget」とコマンドを打った際にインストールされていなければインストールするか聞かれます。

wingetの使い方

wingetにはいくつかコマンドが用意されていますが、良く使うであろうコマンドを簡単に紹介します。

コマンドのヘルプ

コマンドのヘルプはPowerShellを起動しwinget --helpと打つと表示されます。
引数無しでも同じ内容が表示されますが、明示的に–helpを付ける癖をつけた方が良いと思います。
各コマンドのヘルプはwinget install --helpといったように、コマンドの後に–helpで確認できます。

search

パッケージから検索できます。
使い方:winget search [[-q] ] [<オプション>]
例えばソフトウェア名で検索する場合は以下のようなコマンドになります。
参考としてVirtualBoxを検索してみます。

PS C:\> winget search virtualbox
名前                 ID                バージョン 一致            ソース
------------------------------------------------------------------------
Oracle VM VirtualBox Oracle.VirtualBox 6.1.30                     winget
eintopf              mazehall.eintopf  1.3.2      Tag: virtualbox winget

ここで表示されるIDの「Oracle.VirtualBox」をインストール等で指定していきます。

show

特定のパッケージの情報を表示します。
使い方:winget show [[-q] ] [<オプション>]
例えば検索したVirtualBoxの詳細を表示する場合は以下のようなコマンドになります。

PS C:\> winget show Oracle.VirtualBox
見つかりました Oracle VM VirtualBox [Oracle.VirtualBox]
バージョン: 6.1.30
公開元: Oracle Corporation
発行元 URL: https://www.oracle.com
発行元のサポート URL: https://www.oracle.com/virtualization/virtualbox
作成者: Oracle Corporation
モニカー: virtualbox
説明: VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high performance product for enterprise customers, it is also the only professional solution that is freely available as Open Source Software under the terms of the GNU General Public License (GPL) version 2.
ホーム ページ: https://www.virtualbox.org
ライセンス: GNU General Public License, version 2
ライセンス URL: https://www.virtualbox.org/wiki/Licensing_FAQ
プライバシー URL: https://www.oracle.com/legal/privacy
著作権: Copyright © 1995, 2021, Oracle and/or its affiliates.
著作権 URL: https://www.oracle.com/legal/terms.html
インストーラー:
  種類: Exe
  ロケール: en-US
  ダウンロード URL: https://download.virtualbox.org/virtualbox/6.1.30/VirtualBox-6.1.30-148432-Win.exe
  SHA256: 1d085322564f039bf4f46fcb42735516b1a04629ec83da5b97f759e27fecbcdf

最新バージョンは6.1.30である事やライセンスなどを見ることが出来ます。

install

指定したパッケージをインストールします。
使い方:winget install [[-q] ] [<オプション>]
searchで検索したIDを指定して以下のようにインストールできます。

PS C:\> winget install Oracle.VirtualBox
見つかりました Oracle VM VirtualBox [Oracle.VirtualBox] バージョン 6.1.30
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://download.virtualbox.org/virtualbox/6.1.30/VirtualBox-6.1.30-148432-Win.exe
  ██████████████████████████████   103 MB /  103 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

upgrade

指定したパッケージを更新します。
使い方:winget upgrade [[-q] ] [<オプション>]
VirtualBoxはupgradeが上手くいきません。上書きもinstallを使用すると上手くいきました。
なのでVisual Studio Codeをアップグレードする例を示します。

PC C:\> winget upgrade Microsoft.VisualStudioCode
見つかりました  [Microsoft.VisualStudioCode] バージョン 1.63.2
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://az764295.vo.msecnd.net/stable/899d46d82c4c95423fb7e10e68eba52050e30ba3/VSCodeUserSetup-x64-1.63.2.exe
  ██████████████████████████████  76.2 MB / 76.2 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

ハマったこと

終了コードでインストーラーが失敗しました: 1

VirtualBoxはインストールする際にエラーが発生しました。

PS C:\> winget install Oracle.VirtualBox
見つかりました Oracle VM VirtualBox [Oracle.VirtualBox] バージョン 6.1.30
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://download.virtualbox.org/virtualbox/6.1.30/VirtualBox-6.1.30-148432-Win.exe
  ██████████████████████████████   103 MB /  103 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
終了コードでインストーラーが失敗しました: 1

エラーメッセージが「終了コードでインストーラーが失敗しました: 1」というだけで、何も分かりません。
管理者権限でPowerShellを起動し、再度実行するとエラー無くインストール出来ました。

まとめ

パッケージ管理出来るのは便利ですが、upgradeでアップグレード出来ない等まだまだこれからといった印象です。
upgradeコマンドをタスクスケジューラで起動して、更新があれば自動通知するようなスクリプトを組めば便利そうです。

各ソフトウェアに自動更新の機能を実装するよりは、こういったパッケージ管理で一元管理出来る方が良いと思いますので、期待しています。


[広告]当サイトはさくらインターネットのレンタルサーバーを利用しています。