Winget identifies wrong version for Microsoft.DotNet.DesktopRuntime.6
Brief description of your issue
The version detected by winget is > 6.0.29 and the actual version is 8.0.4
output from winget list:
名称 ID 版本 源
------------------------------------------------------------------------------------------------------------
Microsoft Windows Desktop Runtime - 8.0.4 (x64) Microsoft.DotNet.DesktopRuntime.6 > 6.0.29 winget
output from winget upgrade:
名称 ID 版本 可用 源
--------------------------------------------------------------------------------------------------------------------
Microsoft Windows Desktop Runtime - 8.0.4 (x64) Microsoft.DotNet.DesktopRuntime.6 > 6.0.29 8.0.4 winget
Steps to reproduce
...
Expected behavior
Should be 8.0.4
Actual behavior
Reports > 6.0.29
Environment
Windows.Desktop v10.0.19045.4355
X64
Microsoft.DesktopAppInstaller v1.22.11261.0
Hi I'm an AI powered bot that finds similar issues based off the issue title.
Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it. Thank you!
Open similar issues:
- [Misdetech of the version]: Microsoft.DotNet.DesktopRuntime.6 (#3004), similarity score: 0.82
winget listreports incorrectIdforMicrosoft Windows Desktop Runtime - 7.0.0 (x64)(#3565), similarity score: 0.81- winget tries to upgrade .NET 5 Runtime over and over (#2345), similarity score: 0.78
- Incorrect Microsoft .NET SDK version (#3014), similarity score: 0.76
Closed similar issues:
- Microsoft .NET SDK 6.0.412 (x64) is detected as Microsoft.DotNet.SDK.7 < 7.0.100 (#3480), similarity score: 0.77
Note: You can give me feedback by thumbs upping or thumbs downing this comment.
I only have one version of desktop runtime installed.
I think the version is being misdetected. It's finding Microsoft.DotNet.DesktopRuntime.6, but I think the package you have installed might have the slightly different PackageIdentifier of Microsoft.DotNet.DesktopRuntime.8 (last digit changes).
This is based on the version you have installed showing 8.0.4, which matches the .8 package:
PS C:\ManVal> Find-WinGetPackage Microsoft.DotNet.DesktopRuntime
Name Id Version Source
---- -- ------- ------
Microsoft .NET Windows Desktop Runtime 9.0 Preview Microsoft.DotNet.DesktopRuntime.Preview 9.0.0-preview.3.24175.3 winget
Microsoft .NET Windows Desktop Runtime 8.0 Microsoft.DotNet.DesktopRuntime.8 8.0.4 winget
Microsoft .NET Windows Desktop Runtime 7.0 Microsoft.DotNet.DesktopRuntime.7 7.0.18 winget
Microsoft .NET Windows Desktop Runtime 6.0 Microsoft.DotNet.DesktopRuntime.6 6.0.29 winget
Microsoft .NET Windows Desktop Runtime 5.0 Microsoft.DotNet.DesktopRuntime.5 5.0.17 winget
Microsoft .NET Windows Desktop Runtime 3.1 Microsoft.DotNet.DesktopRuntime.3_1 3.1.32 winget
PS C:\ManVal>
When your system shows > 6.0.29, it means that 6.0.29 is the highest version of Microsoft.DotNet.DesktopRuntime.6 in the repo, but somehow the computer's Registry shows a higher version installed. It's showing this because it's mis-matching with the .6 version when it should be matching to the .8 version.
Why is it mis-matching? It matches Registry data against repo data. Sometimes, this is from a previous install that didn't get completely uninstalled, and still has a few lines in the Registry. Could that have happened here?
Well, I cannot figure out where the previous install is. And I've tried installing desktop runtime 6 and then uninstall it, but it is still mis-matching. (btw sry for the late response)
So there's two entries of desktop runtime in the registry. And it seems like only {f1bec...} is recognized by the system (appwiz.cpl) and winget.
After I deleted the {f1bec...} entry in the registry, the system and winget is reading the {CE4D...} entry, which isn't matched to any package id by winget at all.
Here's what's happening as of 6.0.31 being installed (automatically by windows update).
winget update --all
Name Id Version Available Source
-----------------------------------------------------------------------------------------------------------------
Microsoft Windows Desktop Runtime - 6.0.31 (x64) Microsoft.DotNet.DesktopRuntime.7 < 7.0.0 7.0.20 winget
After updating to 8.0.6, the issue still isn't solved.
So for reference, it's common to need more than one version installed due to some apps not being updated to accept later versions as compatible (and thus force installing the older version). Right now the currently valid versions of .Net are: .Net 9 as the current preview version .Net 8 as the latest stable and LTS .Net 6 as the previous but still maintained LTS.
winget forcibly upgrading .Net 6 to .Net 7 is not ok as it's not maintained anymore.
===
Just noticed in another issue the experimental "sidebySide" feature. That seems to have fixed the behavior for me.