kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Chocolateyからwingetへ移行する

chocolatey.org

今までパッケージ管理にはChocolateyを使っていました。

docs.microsoft.com

Windows 10のwingetが正式版になったということで、移行しよう…と思ったのですが、ChocolateyはWindows Installerのデータベースとは別にパッケージ管理しています。

一台はちょっと力技というか、アンインストール→インストールし直したのですが、どうも無駄。よくよく考えてみればそんな技必要ないようなということで調べたらやっぱりありました。

  1. C:\ProgramData\chocolatey\lib配下にある対象パッケージを削除する。依存関係もあるので注意
  2. コマンドでパッケージ情報だけを削除する

安全にということで、2番目の公式方法で実行。

choco uninstall パッケージ名 -n --skipautouninstaller

これで綺麗にChocolateyから消えました。とはいっても、Chcolateyを完全に捨てることはできません。wingetはどうもインストーラーがあるツールを前提にしているようで、例えば私が使っているツールではこの辺がサポートされておらず、困っています。

  • sysinternals
  • hugo
  • yarn

他にもツール側が悪いのですが、アプリ内部に更新機能を持っているツールで更新してしまうとWindows Installerのバージョンが更新されないケースがあります。そういう時に明示的にwingetでハッシュを上書きしないといけないのが困りものです。

  • Teams
  • OBS Studio

など(現時点の情報なので将来変わっているかもしれません)。更新情報のソースとして、Windows Installerのバージョン情報を見ているので、更新を忘れていたツールでもwinget upgradeで一括更新できるのはいいですね。大多数の人にはこれでいいんじゃないかなと思います。

今のところ完全にwingetにするのは開発系のツールでは特に困ることがあるので、Chocolateyと併用しないといけないのは残念ですが、wingetを徐々に使っていく予定です。

(追記)
もう一つ困るケースがありました。例えばSSMSなんですが、言語別にインストーラーが分かれています。WinGetでは一応localeの設定はあるのですが、英語版しか設定されていないためか、自動的に英語版のSSMSがダウンロードされるので、ちょっと困ります。

docs.microsoft.com

SSMSの例。

github.com

これ現在のlocale判定できるようならPR出したほうがいいんでしょうね(割と真剣に困ってる)。