try to upgrade vc redist and desktop runtime x86, upgrades x64 instead
alisonatwork opened this issue · 8 comments
Brief description of your issue
I've been trying to get all my packages up to date using winget
, and for the most part it works, but there are two x86 packages that every time I try to upgrade them, it starts download the (already upgraded) x64 version instead.
Microsoft Visual C++ 2013 Redistributable (x86) - 12.0.30501 Microsoft.VC++2013Redist-x64
Microsoft Windows Desktop Runtime - 3.1.25 (x86) Microsoft.DotNet.DesktopRuntime.3_1
It seems that somehow the id for the x64 version has been associated with the name of the x86 version.
I suspect this is similar to the bug #1413 but I am not sure how to fix it.
Steps to reproduce
- List upgrades.
winget upgrade
Shows:
Name Id Version Available Source
----------------------------------------------------------------------------------------------------------------------------------
Microsoft Windows Desktop Runtime - 3.1.25 (x86) Microsoft.DotNet.DesktopRuntime.3_1 3.1.25 3.1.27 winget
Microsoft Visual C++ 2013 Redistributable (x86) - 12.0.30501 Microsoft.VC++2013Redist-x64 12.0.30501.0 12.0.40664.0 winget
- Try to upgrade
winget upgrade --verbose-logs "Microsoft Visual C++ 2013 Redistributable (x86) - 12.0.30501"
Instead does the following:
Found Microsoft Visual C++ 2013 Redistributable (x64) [Microsoft.VC++2013Redist-x64] Version 12.0.40664.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://download.visualstudio.microsoft.com/download/pr/10912041/cee5d6bca2ddbcd039da727bf4acb48a/vcredist_x64.exe
Expected behavior
I expect the x86 version to be downloaded and upgraded.
Actual behavior
The x64 version is re-downloaded (even though it is already installed) and the x86 version remains in the list of non-upgraded packages.
Environment
Windows Package Manager v1.3.2091
Copyright (c) Microsoft Corporation. All rights reserved.
Windows: Windows.Desktop v10.0.22621.317
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.18.2091.0
For reference, I think I have "fixed" the vc redist problem by running winget install Microsoft.VC++2013Redist-x86
and manually uninstalling the old version via Control Panel.
However I don't know if I can fix the Desktop Runtime problem the same way, because winget search "Desktop Runtime"
does not show any x86 versions available.
@alisonatwork would you mind trying winget search Microsoft.DotNet
?
That should display the SDKs and Runtimes.
You can use "--architecture" to specify the architecture for the install command if it's not defaulting to the proper architecture.
Output of winget search Microsoft.DotNet
:
Name Id Version Source
----------------------------------------------------------------------------------------------------------------------------
Microsoft .NET Core SDK Uninstall Tool Microsoft.dotnetUninstallTool 4.80.595 winget
.NET Framework Microsoft.dotNetFramework 4.8 winget
Microsoft .NET SDK 7.0 Preview Microsoft.DotNet.SDK.Preview 7.0.100-preview.7.22377.5 winget
Microsoft .NET SDK 6.0 Microsoft.DotNet.SDK.6 6.0.400 winget
Microsoft .NET SDK 5.0 Microsoft.DotNet.SDK.5 5.0.408 winget
Microsoft .NET SDK 3.1 Microsoft.DotNet.SDK.3_1 3.1.422 winget
Microsoft .NET Runtime 7.0 Preview Microsoft.DotNet.Runtime.Preview 7.0.0-preview.7.22375.6 winget
Microsoft .NET Runtime 6.0 Microsoft.DotNet.Runtime.6 6.0.7 winget
Microsoft .NET Runtime 5.0 Microsoft.DotNet.Runtime.5 5.0.17 winget
Microsoft .NET Runtime 3.1 Microsoft.DotNet.Runtime.3_1 3.1.28 winget
Microsoft ASP.NET Core Hosting Bundle 7.0 Preview Microsoft.DotNet.HostingBundle.Preview 7.0.0-preview.7.22376.6 winget
Microsoft ASP.NET Core Hosting Bundle 6.0 Microsoft.DotNet.HostingBundle.6 6.0.8 winget
Microsoft ASP.NET Core Hosting Bundle 5.0 Microsoft.DotNet.HostingBundle.5 5.0.17 winget
Microsoft ASP.NET Core Hosting Bundle 3.1 Microsoft.DotNet.HostingBundle.3_1 3.1.28 winget
Microsoft .NET Windows Desktop Runtime 7.0 Preview Microsoft.DotNet.DesktopRuntime.Preview 7.0.0-preview.7.22377.1 winget
Microsoft .NET Windows Desktop Runtime 6.0 Microsoft.DotNet.DesktopRuntime.6 6.0.8 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.28 winget
Microsoft ASP.NET Core Runtime 7.0 Preview Microsoft.DotNet.AspNetCore.Preview 7.0.0-preview.7.22376.6 winget
Microsoft ASP.NET Core Runtime 6.0 Microsoft.DotNet.AspNetCore.6 6.0.8 winget
Microsoft ASP.NET Core Runtime 5.0 Microsoft.DotNet.AspNetCore.5 5.0.17 winget
Microsoft ASP.NET Core Runtime 3.1 Microsoft.DotNet.AspNetCore.3_1 3.1.28 winget
Unfortunately the --architecture
flag does not seem to work on upgrade. Instead I tried reinstalling over the top with winget install -a x86 Microsoft.DotNet.DesktopRuntime.3_1
. This successfully selected the correct download and installed it.
Now I am running at the latest version (3.1.28) for both x64 and x86 versions. I'm not sure what will happen when the next version comes out. Will I still have to use install
and -a x86
to upgrade one of them? If you can't easily reproduce on your end I will let you know next time an upgrade appears.
Not a solution, but I managed to work around this by manually upgrading Microsoft.VCRedist.2015+.x64
(x64, not x86) with winget upgrade <>
.
Is there a fix for this because this is still affecting me. It attempts to upgrade to the newer version, but the old version still persists.
@denelon Why is this still unsolved?
It seems that Microsoft these days can't even get their download links and versions right, much less anything else.
For example winget
offers version 14.38
of runtime which if you try to find and download by going to latest supported downloads and follow the links:
https://aka.ms/vs/17/release/vc_redist.x86.exe
https://aka.ms/vs/17/release/vc_redist.x64.exe
You will get the version 14.36.32532
as the "latest".
Same with Visual Studio 2022 — Visual Studio installer installs 14.36.32532
as the "latest".
So where is winget
pulling its "latest" version from? Is it even stable / release version or is it a preview? If it's a preview why is it offered in a production setting?