Help us understand the problem. What is going on with this article?

Wingetについて

Wingetについて

by tfukumori
1 / 19
公式サイト

公式ブログ
https://devblogs.microsoft.com/commandline/windows-package-manager-preview/
公式ヘルプ
https://docs.microsoft.com/ja-jp/windows/package-manager/


概要
  • Microsoft公式のコマンドラインパッケージマネージャーがリリース!(2020年6月2日現在プレビュー版)
  • ソフトウェアの必要な場所からのダウンロードとインストールを自動化できる。
    • 最新バージョン(または指定した正確なバージョン)を検索してインストール
    • search、showコマンドで使用可能なパッケージの検索
  • 新たにパッケージマネージャーを作成した理由
    • 信頼されたアプリケーションのリポジトリを構築し、悪意のあるソフトウェアがリポジトリやマシンに侵入する可能性を減らす。
    • パッケージマネージャーをネイティブWindowsアプリケーションとして提供する。
  • すべてのWindows 10バージョンをサポートしている

便利になること
  • 例えば、Azureのチャットボット開発で、以下のコマンドで基本的な環境がそろう
    • 再インストール、他の方に環境を設定してもらう際も便利になりそう
winget install -e --id Microsoft.PowerShell
winget install -e --id Microsoft.AzureCLI
winget install -e --id Microsoft.WindowsTerminal
winget install -e --id Microsoft.VisualStudioCode
winget install -e --id Microsoft.BotFrameworkEmulator
winget install -e --id Microsoft.BotFrameworkComposer

インストール

・GitHub(個人的にはこちらがおすすめ)
https://github.com/microsoft/winget-cli/releases
・Insiderプログラムに参加
https://devblogs.microsoft.com/commandline/windows-package-manager-preview/
・正式版ではデスクトップ版のインストーラーが提供される予定


使用できるコマンド
install   指定されたアプリケーションをインストール
show      アプリケーションに関する情報を表示
source    アプリケーションのソースを管理
search    アプリの基本情報を見つけて表示
hash      インストーラー ファイルをハッシュするヘルパー
validate  マニフェスト ファイルを検証

install オプション(--help
-m,--manifest     アプリケーションのマニフェストへのパス
--id              ID で結果をフィルター処理
--name            名前で結果をフィルター処理
--moniker         アプリ モニカーで結果をフィルター処理
-v,--version      指定されたバージョンを使用します。既定値は最新のバージョンです
-s,--source       指定されたリソースを使用してアプリを検索
-e,--exact        完全一致を使用してアプリを検索
-i,--interactive  対話式インストールを要求する;ユーザー入力が必要である可能性があります
-h,--silent       サイレント インストールを要求
-o,--log          ログの場所 (サポートされている場合)
--override        インストーラーに渡される引数を上書き
-l,--location     インストール先 (サポートされている場合)

More help can be found at: https://aka.ms/winget-command-install

install

https://aka.ms/winget-command-install

  • 既定では対話型モードではないが、インストールの進行状況が表示される。
1. 複数候補がある場合は、失敗する。
> winget install PowerShell
Multiple apps found matching input criteria. Please refine the input.
Name                     Id                               Version         Matched
-----------------------------------------------------------------------------------------
PowerShell               Microsoft.PowerShell             7.0.2
Windows Terminal Preview Microsoft.WindowsTerminalPreview 1.0.1401.0      Tag: PowerShell
PowerShell-Preview       Microsoft.PowerShell-Preview     7.1.0-preview.3
Windows Terminal         Microsoft.WindowsTerminal        1.0.1401.0      Tag: powershell
2. IDでの完全一致指定を行う場合は-e--idを付加する
winget install -e --id Microsoft.PowerShell

serch, show オプション(--help

https://docs.microsoft.com/ja-jp/windows/package-manager/winget/search
https://docs.microsoft.com/ja-jp/windows/package-manager/winget/show

ほぼ同じオプション。

以下が共通

  --id         ID で結果をフィルター処理
  --name       名前で結果をフィルター処理
  --moniker    アプリ モニカーで結果をフィルター処理
  -s,--source  指定されたリソースを使用してアプリを検索
  -e,--exact   完全一致を使用してアプリを検索

search 固有オプション
  --tag        タグ で結果をフィルター処理
  --command    コマンドによる結果のフィルター処理
  -n,--count   指定した数以下の結果を表示

show 固有オプション
  -m,--manifest  アプリケーションのマニフェストへのパス
  -v,--version   指定されたバージョンを使用します。既定値は最新のバージョンです
  --versions     アプリの利用可能なバージョンを表示

source

https://docs.microsoft.com/ja-jp/windows/package-manager/winget/source

  • 追加のソースは、現時点ではサポートされていません。

wingetでダウンロード中のファイルが配置される場所
%USERPROFILE%\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\

うまくいかない場合その1(権限がない場合)
1. 通常権限で実行
winget install --Id OpenJS.Nodejs
Found Node.js [OpenJS.Nodejs]
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://nodejs.org/dist/v14.4.0/node-v14.4.0-x64.msi
  ██████████████████████████████  28.7 MB / 28.7 MB
Successfully verified installer hash
Installing ...
  • エラーコードが返却され、実行できない。
  • 対処策:管理者権限でコマンドを実行する。
Installer failed with exit code: 1602
Installer log is available at: C:\Users\\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\WinGet\OpenJS.Nodejs.14.4.0.log
2. 管理者で実行
Found Node.js [OpenJS.Nodejs]
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://nodejs.org/dist/v14.4.0/node-v14.4.0-x64.msi
  ██████████████████████████████  28.7 MB / 28.7 MB
Successfully verified installer hash
Installing ...
Successfully installed!

うまくいかない場合その2(英語版と日本語版)
winget install Microsoft.SQLServerManagementStudio
Found SQL Server Management Studio [Microsoft.SQLServerManagementStudio]
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://go.microsoft.com/fwlink/?linkid=2125901&clcid=0x409
  ██████████████████████████████  534 MB /  534 MB
Successfully verified installer hash
Installing ...
Installer failed with exit code: 1626
  • Microsoft SQL Server Mangement Studioは、既定でインストールされるのが英語版
  • 日本語版インストール済環境に英語版をインストールしてもバージョンアップできない
  • ログを確認しないと詳細はわからなかった。
    • %USERPROFILE%\AppData\Local\Temp\SsmsSetup\SSMS-Setup-ENU_20200609110102.log
  • 日本語版をアンインストールすれば英語版をインストールできるが、当然ながら英語版しか使えない(SSMSは英語版と日本語版が別インストーラー)
  • 日本語版を使いたければ、SSMSは通常通りのインストールとなる

うまくいかない場合その3(同一バージョン)
  • 同一バージョンの場合には、エラーコードが返却されたことがあった。(インストーラー次第)

うまくいかない場合その4(自分自身の更新)
  • Windows Terminal上のPoweshellからPoweshellをインストールするとエラーとなったことがあった(自分自身を更新しようとしたため?)
    • cmd.exeから再インストールすると復旧した。

補足
  • 管理者のコマンドプロンプトから起動しなかった場合は、UACでブロックされる。
  • wingetのリポジトリは反映が遅い場合があった。
    • PowerShellのコマンドで、PoweShellが古いというメッセージが表示されるが、wingetではまだ更新されていないことがあった。

参考
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした