今までパッケージ管理にはChocolateyを使っていました。
Windows 10のwingetが正式版になったということで、移行しよう…と思ったのですが、ChocolateyはWindows Installerのデータベースとは別にパッケージ管理しています。
一台はちょっと力技というか、アンインストール→インストールし直したのですが、どうも無駄。よくよく考えてみればそんな技必要ないようなということで調べたらやっぱりありました。
C:\ProgramData\chocolatey\lib
配下にある対象パッケージを削除する。依存関係もあるので注意- コマンドでパッケージ情報だけを削除する
安全にということで、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がダウンロードされるので、ちょっと困ります。
SSMSの例。
これ現在のlocale判定できるようならPR出したほうがいいんでしょうね(割と真剣に困ってる)。