WinGet 更新后,已安装列表出现重复条目

平常使用 WinGet 来管理 Windows 软件包。经常发现在使用一段时间后,winget list 返回的列表中会出现同一个已安装包的多个不同版本。特别是微软自家的大型软件,比如 Visual Studio 之类的,安装后新增的条目更是大肠包小肠。更恶心的是,有些包在更新后,无法覆盖旧版本的条目。而另一边,旧条目一直处在可升级状态。这导致每次更新都要重新升级一遍。

比如在近期升级后,就发生了 Microsoft.DotNet.SDK.9 出现两个不同版本的重复条目:

NameIdVersionAvailableSouce
Microsoft .NET SDK 9.0.240 (x64)Microsoft.DotNet.SDK.99.0.2409.0.300winget
Microsoft .NET SDK 9.0.300 (x64)Microsoft.DotNet.SDK.99.0.300winget

旧版本 9.0.240 并没有被覆盖,导致之后每次运行 winget update --all 都要重新下载并安装一遍 9.0.300

目前似乎没有办法避免这种现象的发生,只能事后修复。用以下命令手动删除旧版本:

powershellwinget uninstall Microsoft.DotNet.SDK.9 --version 9.0.240