MoguraDev

winget の感想や使いこなすためのコツ

Tweet

概要

最近 chocolatey から winget へ移行中なので感想や運用のコツなどを書きます。

導入が容易

microsoft 謹製なので導入までの手間はかなり少ないです。

microsoft store からアプリインストーラーを更新するだけで使えるようになります。

アプリの特定が難しい

winget は search や install の際になかなかアプリを特定しにくいです。

source オプションで source を指定したり、名前ではなく ID で指定しないとなかなか特定できないです。

## bad
winget install firefox

## good
winget install firefox -s msstore
winget install Mozilla.Firefox

コードにして管理するなら import が便利

winget install ではすでにインストール済みのアプリは再インストールしてしまいます。

winget import ならインストール済みのアプリはスキップしてくれるので、コード化するなら import の方が便利です。

{
"$schema": "https://aka.ms/winget-packages.schema.2.0.json",
"CreationDate": "2022-02-01T09:28:04.857-00:00",
"Sources": [
{
"Packages": [
{ "PackageIdentifier": "Docker.DockerDesktop" },
{ "PackageIdentifier": "Git.Git" },
{ "PackageIdentifier": "Microsoft.VisualStudioCode" }
],
"SourceDetails": {
"Argument": "https://winget.azureedge.net/cache",
"Identifier": "Microsoft.Winget.Source_8wekyb3d8bbwe",
"Name": "winget",
"Type": "Microsoft.PreIndexed.Package"
}
}
],
"WinGetVersion": "1.1.13405"
}

import で Store アプリをインストールする

今のところ winget export を実行しても Store アプリは export されません。

ですが、下記のように SourceDetails を指定すると import は可能です。

また、PackageIdentifier を見ても何のアプリか判別不能なので、適当に Comment という key でアプリ名を書いておくと便利です。

{
"Packages": [{ "PackageIdentifier": "9WZDNCRDK3WP", "Comment": "Slack" }],
"SourceDetails": {
"Argument": "https://storeedgefd.dsx.mp.microsoft.com/v9.0",
"Identifier": "StoreEdgeFD",
"Name": "msstore",
"Type": "Microsoft.Rest"
}
}

確認ダイアログをスキップする

普通に winget でアプリを install しようとすると確認ダイアログが出てくるので、スキップする方法を紹介します。

  1. 管理者権限で terminal を起動する
  2. accept-package-agreements オプションを指定する

winget の確認ダイアログは 2 種類あるので一括インストールする時は両方やった方が良いです。

おわり

winget の感想などを書きました。

まあまあ癖があるなと思いましたが現時点でも便利ですし、今後も改良されていくと思うので期待しています。