microsoft / winget-cli

WinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface).
https://learn.microsoft.com/windows/package-manager/
MIT License
23.27k stars 1.45k forks source link

winget tries to upgrade .NET 5 Runtime over and over #2345

Open exchange12rocks opened 2 years ago

exchange12rocks commented 2 years ago

Brief description of your issue

I have two .NET runtimes installed side by side: 5 and 6 image

winget sees the 5.0.17 version and tries to upgrade it to 6.0.7, even though 6.0.7 is already installed on the machine.

Steps to reproduce

  1. Install .NET Runtime 5.0.17
  2. Install .NET Runtime 6.0.7
  3. Run winget upgrade
  4. You'll see the following:
    Name                                               Id                                Version       Available     Source
    -----------------------------------------------------------------------------------------------------------------------
    Microsoft .NET Runtime 6.0                         Microsoft.DotNet.Runtime.6        5.0.17.31213  6.0.7         winget

Expected behavior

winget treats .NET Runtime 5 and 6 as two different applications and does not offer new .NET 6 versions for .NET 5.

Actual behavior

winget treats .NET Runtime 5 and 6 the same application, offering new .NET 6 versions as upgrades for .NET 5.

Environment

Windows Package Manager v1.2.11601
Windows: Windows.Desktop v10.0.19044.1766
Package: Microsoft.DesktopAppInstaller v1.17.11601.0
denelon commented 2 years ago

The issue with dotnet runtimes is due to there being multiple versions of the runtime installed side-by-side and is related to

We have enhancements in Windows Package Manager 1.3 support for "AppsAndFeatures" data that will help in this scenario.

dw72 commented 2 years ago

For me, this situation is a little bit different... I have installed only one version 5.0.13

image

but winget list to install version 3.1.27

image

o course when I try install it

image

denelon commented 2 years ago

@dw72

Can you try with "--verbose-logs" and share the resulting logs? I'd also like to know which version of Windows Package Manager you're running.

dw72 commented 2 years ago

Hi @denelon, see attachments below.

image

WinGet-2022-07-25-14-18-12.581.log

denelon commented 1 year ago

@exchange12rocks? Is this still happening?

exchange12rocks commented 1 year ago

@denelon Yes:

Name                                        Id                           Version Available Source
-------------------------------------------------------------------------------------------------
Microsoft .NET Runtime - 5.0.17 (x64)       Microsoft.DotNet.Runtime.6   < 6.0.5 6.0.14    winget
1 upgrade available.
functionkey-12 commented 11 months ago

I am also having this issue with different versions of the .NET runtime and winget. I have .NET 6.0.23 installed and winget would like me to upgrade it to 6.0.25. However, I already have that version installed as well.

In any case, winget downloads and attempts to install 6.0.25 and then closes shortly after starting the install. If I try to upgrade with the the -id flag, I get the "No installed packages [...]" message. If I try to install with the id, the package is found, downloaded and tries to install.

I have also found and ran the .NET Fix Repair tool, and it found no issues with my installed packages.

Winget version v1.6.3421

winget_issue2345_20231219

sharpsalat commented 7 months ago

Having similar issue: image

image

aaronliu0130 commented 7 months ago

To workaround this, set the architecture and install.

Chudesnov commented 7 months ago

set the architecture and install.

@aaronliu0130 could you elaborate further?

aaronliu0130 commented 7 months ago

e.g. winget install Microsoft.DotNet.SDK.5 -a x64