Winget zeigt Update-Fehler mit der Visual C++ Studio 2015-2022 Redistributable (x64) sowie veralteter Inhalte im zugehörigen Microsoft Learn Artikel auf. Ein Gastbeitrag von Jo Arnold
Die teilweise zahllos installierten Redistributable-Versionsnummern, die mit diverser Software auf den Rechner kommen, durch eine Installation der jeweils neuesten Version von 2005, 2008, 2010, 2012 sowie der 2015-2022 zu ersetzen, deckte letztlich einen Fehler in Verbindung von Microsoft Visual C++ Studio 2015-2022 Redistributable (x64) mit winget und den veralteteten Informationen nicht nur zur Microsoft Visual C++ 2008 Redistributable unter Microoft Learn auf. Ein Erfahrungsbericht. Links am Seitenende.
Microsoft Learn
Unter Microsoft Learn gibt es eine eigentlich ganz sinnvolle Seite (Link am Seitenende), die für alle Versionen eine Übersicht zu den (vorgeblich) aktuellsten fehlerfreien Updates und den Downloads bereitstellt. Von Version 2005 bis 2022 installierte ich testweise jeweils die neuesten Varianten für (x64) als auch (x86). ARM64 wurde nicht getestet.
Die Verwendung der Downloads von Microsoft Learn ersetzten tatsächlich vollständig die diversen Untervarianten derselben Visual Studio Versionen. So ersichtlich für (x64) und (x86) in den Listen von CPL Programme und Features als auch in der abgespeckten und nicht sonderlich praktischen Darstellung der Apps und Features. Die nach dem Update durchgeführten Tests von bereits vorher installierter Software, die jeweils ihre eigenen Redistributable-Unterversionsnummern mitbrachten, liefen allesamt fehlerfrei. Installierte ich im Anschluss eine weitere Software von der ich wusste, dass diese ansonsten immer eine veraltete Redistributable-Unterversionsnummer installiert hat, so fand dies nun nicht mehr statt. Alles läuft wie erwartet und gewünscht.
Downloads und Infos auf Microsoft Learn nicht aktuell
Microsoft Learn gibt an, dass für VC++ Visual Studio 2008 die 9.0.30729.5677 (x64) + (x86) die aktuellste Version ist. Winget zeigte nach der Installation aber unmittelbar Version 9.0.30729.6161 als Update an (Links am Seitenende). Update per winget läuft dann aber fehlerfrei. Seit einiger Zeit betrifft das auch die Version 2015-2022 von Microsoft Learn. Fazit: Microsoft Learn ist hier nicht aktallisiert worden.
Update-Fehler mit Visual Studio 2015-2022 Redistributable (x64)
Auch die Redistributable-Version 2015-2022 installierte ich in den Varianten (x64) und (x86), die wie in Programme und Features als auch unter Apps und Features mit der erwartbaren Versionsnummer und der Angabe zu (x64) und (x86) erscheinen. Selbst winget list führte im Output die Microsoft Visual C++ 2015-2022 Redist… zweimal auf. Soweit korrekt und ich schenkte den Details in winget bis vor wenigen Wochen keine weitere Beachtung.
Seit geraumer Zeit bietet winget für die beiden 2015-2022 Redistributable ein Update von 14.38 auf die v.14.40.33617.1 an. Nach einiger Zeit machte ich zuerst einen Abgleich bei Microsoft Learn, die aber nach wie vor – sagen wir – die alte Version 14.38 beschreibt und auch der Download bringt dort bis dato nur die alten Installationsdateien. Die Signatur der 14.40 Installer trägt den Zeitstempel vom 18. Februar 2024. ARM64 wurde nicht getestet. Fazit: Microsoft Learn ist hier nicht aktualisiert worden.
Mit „winget show Microsoft.VCRedist.2015+.x64″ und Microsoft.VCRedist.2015+.x86“ wird der neue Downloadlink angezeigt (Link am Seitenende). Erst per winget und später per manuellem Download installierte ich die neueste v.14.40. Warum das mehrfach geschah, folgt jetzt.
Nach dem Update war die v.14.40 unter Programme und Features als auch unter Apps und Features korrekt mit (x64) sowie (x86) gelistet. Mit winget sieht es aber völlig anders aus. Denn egal ob nun die alte (x64) v.14.38 aus Microsoft Learn oder die neue (x64) über den Downloadlink von winget installiert werden: winget sieht beide (x64) „teilweise“ nur als (x86).
Wie man merkt, so ist das schnell zu übersehen. Erst wenn man mit winget die (x64) updatet. Somit also winget das Update durchführt, dabei aber das Update für die (x86) zieht und danach die Software immer noch in winget nach der neuen Version durstet, fällt evtl. auf, dass hier etwas nicht stimmt.
Manuell installiert sind (x64) + (x86) v.14.38.33135.0 (source: Microsoft Learn)
- winget list
- Microsoft Visual C++ 2015-2022 Microsoft.VCRedist.2015+.x86 14.38.33135.0
- Microsoft Visual C++ 2015-2022 Microsoft.VCRedist.2015+.x86 14.38.33135.0
- Beide deinstalliert, danach nur (x64) neu installiert
- winget list
- Microsoft Visual C++ 2015-2022 Microsoft.VCRedist.2015+.x86 14.38.33135.0
In beiden Varianten zeigt winget für die (x64) als ID die Variante (x86) an.
Manuell installiert sind (x64) + (x86) v.14.40.33617.1 (source: winget Links)
- winget list
- Microsoft Visual C++ 2015-2022 Microsoft.VCRedist.2015+.x86 14.40.33617.1
- Microsoft Visual C++ 2015-2022 Microsoft.VCRedist.2015+.x86 14.40.33617.1
Beide deinstalliert, danach nur (x64) neu installiert
- winget list
- Microsoft Visual C++ 2015-2022 Microsoft.VCRedist.2015+.x86 14.40.33617.1
In beiden Varianten zeigt winget für die (x64) als ID die Variante (x86) an.
Zieht man das Fenster der cmd breiter, dann sind auch die Spalten breiter, das Ergebnis wird offensichtlicher:
- winget list
- Microsoft Visual C++ 2015-2022 Redistributable (x64) Microsoft.VCRedist.2015+.x86 14.40.33617.1
Dem Namen der (x64) wird also als Paket-ID die Microsoft.VCRedist.2015+.x86 zugeordnet.
Auswirkung:
Installiert man mit winget bei der (x64) das angezeigte Update von 14.38 auf 14.40, dann läuft das Setup in winget zwar irgendwie erfolgreich durch, es installiert aber das Update für die (x86), sofern die (x86) neben der (x64) überhaupt vorhanden ist. Daher ist nach dem Update der falsch dargestellten (x86)-ID die Software mit dem Namen des (x64) natürlich nicht auf dem aktuellen Stand.
- Das Problem existiert mindestens seit der Version 14.38.33135.0 und das auch, bevor es über winget die v.14.40 gab.
- Die Abfrage auf den Namen bezogen zeigt mit winget die richtige Zuordnung zur (x64):
- winget show „Microsoft Visual C++ 2015-2022 Redistributable (x64)
So wie ich es bisher umfasse, so laufen ohne weiteres Zutun die Updates über die ID, weshalb das gezogene Update durch die falsch zugeordnete ID wirkungslos ist. Wer also nachweislich ein (x64) von vor v.14.40 updaten will, der macht das Update z. B. in winget manuell per abgeänderter ID Microsoft.VCRedist.2015+.x64 und das funktioniert dann auch.
- winget update Microsoft.VCRedist.2015+.x64
winget show Microsoft.VCRedist.2015+.x64 zeigt den aktuellen Downloadlink an. Per Browser kann dann ein manueller Download initiiert werden. Praktisch, da man dann auch die Source für weitere Rechner hat. Aber keiner der Weg behebt die Problematik, dass auch die (x64) v.14.40 erneut der falschen ID mit Microsoft.VCRedist.2015+.x86 zugeordnet wird. Das verursacht bei künftigen Updates denselben Fehler.
Ich befasse mich zwischendurch seit einiger Zeit mit dem Thema. Auf Github gibt es bereits mindestens einen gemeldeten Issue zum Thema. Es scheint, dass hier winget die Verantwortung auf Microsoft schiebt. Es erweckt aber auch den Eindruck, dass man auf Seiten von winget das nicht überprüft hat und daher auch nicht belegen kann, dass die falsche ID-Zuordnung eben nicht durch winget erzeugt wird.
Vielleicht hilft dieser Artikel, dass das leidliche Problem endlich gehört und beseitigt wird.
Links (Stand 2024-03-29)
- Github – winget Issue
- Microsoft Learn (teilweise veraltet) Microsoft Visual C++ Redistributable latest supported downloads
- Installer Downloads:
- 2008 – 9.0.30729.6161 (winget)
- Visual Studio 2008 redist – 9.0.30729.6161 (x64)
- Visual Studio 2008 redist – 9.0.30729.6161 (x86)
- 2015-2022 v.14.38.33135.0 (Microsoft Learn)
- Visual C++ 2015-2022 redist – 14.38.33135.0 (x64)
- Visual C++ 2015-2022 redist – 14.38.33135.0 (x86)
- v.14.40.33617.1 (winget)
- Visual C++ 2015-2022 redist – 14.40.33617.1 (x64)
- Visual C++ 2015-2022 redist – 14.40.33617.1 (x86)
Ist mir nicht aufgefallen. Auf mehreren Installationen (Win 10 und 11) bis hoch zur Windows Canary ohne Probleme mittels winget auf 14.40.33617.1 aktualisiert und winget list zeigt auch für x64 und x86 die richtige ID an.
Seite Microsoft Learn
Visual 2008 Version 6161 ist das SP 1.
In MS Learn auf den SP1 Link klicken, dann wird 6161 runtergeladen.
Mit der Visual C++ Runtime 2015-2022 habe ich eigentlich keine Probleme. Probleme habe ich mit der Visual C++ Runtime 2005 und 2013, wo Winge(UI) eine veraltete Version feststellt, die Installation fehlschlägt und ich keine Neuere im Internet finde.
Ferner meldet Winget(UI) auch eine veraltete Version von Google Chrome, trotzdem der Aktuelle installiert ist. Auch hier schlägt die Aktualisierung fehl.
Es gibt übrigens schon die neuere Microsoft Visual C++ 2015-2022 Redistributable 14.40.33721.2
x86
https://download.visualstudio.microsoft.com/download/pr/113d16d7-044c-4a0b-a81f-988dc51d2b1f/17D04E833349D2C014C0BE79CE22C069BF91147C0E546F2D30592F455773DABD/VC_redist.x86.exe
x64
https://download.visualstudio.microsoft.com/download/pr/113d16d7-044c-4a0b-a81f-988dc51d2b1f/D24162483BF15A53D8C93636396BF001DEC8BBBFA2C0357B7BD5C6424C1B1C64/VC_redist.x64.exe
D A N K E !! 👍👍
Ich habe mal unter
Systemsteuerung-> Alle Systemsteuerungselemente-> Programme und Features
bei mir nachgeschaut
installiert ist bei mir merkwürdigerweise
2008 – 9.0.30729.7523 für x64 und x86 seit November 2023…
Muss mal weiter testen
Die neuen Pakete für 2015-2022 sind jetzt auf 14.40.33721.2 für x86 und x64…
Dank des Downloadlinks von „Alles“……………………………
Ich nutze zur Aktualisierung der Visual C++ Redistributables dieses auf GitHub gehostete Projekt: https://github.com/abbodi1406/vcredist/releases (ich extrahiere dann das tatsächlich aktualisierte Paket aus der .exe mit 7-Zip und „Intern öffnen“). Die Pakete dort sind auch von unnötigem Bloat befreit, den die oben im Artikel genannten Versionen sonst auf die Festplatte schleppen.
Sind dieselben Setups. Abbodi hat ja auch direkt die Quellen verlink, welche er für sein Paket verwendet. Kann man auf seiner Seite auch alle einzeln direkt von MS herunterladen.
Stimmt nicht, in den Github-Releases liegen die Runtime-Versionen in „Minimum“- und „Additional“-Paketen vor, die nach Installation auch als solche in „Programme und Features“ gelistet werden. Das hier erwähnte, übliche „2015-2022“-Paket gibt es dort z.B. gar nicht, es heißt einfach „2022“, bestehend aus 2x „Minimum“- und 2x „Additional“-Paketen (jeweils für x86 und x64). Mit bestimmten gesetzten Flags lässt sich der ganze Prozess auch passgenau automatisieren, wenn man möchte.
Ist dennoch dasselbe. 2022 ist das 2015-2022 Paket und wenn Du die .exe von Microsoft direkt entpackst, erhälts Du auch die “Minimum”- und “Additional” Setups. Bei der .exe von Microsoft sind halt nur noch die Patches enthalten. Ansonsten ist es aber dasselbe, nur einmal als komplett Paket und einmal entpackt. Aber irgendein „Bloat“ ist da nicht enthalten.
Der „Bloat“ besteht aus dem unnötigen grafischen Setup-Programm, Abbodi selbst nennt es „..without the original setup bloat payload“. Insofern also kein gravierender „Bloat“, aber es geht ums Prinzip. 😄
Zu den MSVC 2015-2022 redistributables:
Die Version 14.38.33135 ist von der letzten RTM-Version von Visual Studio 2022 17.9 (einschließlich 17.9.5 Update). Daher zeigen auch die Microsoft Learn-Links auf diese Version, da dort immer die letzte RTM-Version verfügbar ist.
Die Version 14.40.33617 ist von der Preview-Version von Visual Studio 2022 17.10, die als RTM wahrscheinlich im Mai verfügbar sein wird. Es kann passieren, dass diese Version dann die neue RTM-Version wird, da es keine Änderungen mehr gibt, es ist aber auch möglich, dass sie zum finalen Release noch einmal aktualisiert wird, sehr wahrscheinlich dieses Mal, da ja bereits eine Version 14.40.33721.2 aufgetaucht ist.
Ich denke, dass die Winget-Maintainer immer sehr schnell dabei sind, auf die Preview-Versionen der Redistributables zu aktualisieren, also wenn man keine Preview-Versionen auf seinem System möchte, sollte man bei den Microsoft Learn-Paketen bleiben.
Könnte auch ein Fehler bei Microsoft sein, welche das Paket für winget zu früh aktualisiert haben. Wenn ich heute
winget search Microsoft.VCRedist.2015+
eingebe, ist die Version 14.38.33135.0 wieder aktuell. Die Version 14.40.* wird nicht mehr angeboten oder gefunden.Bei mir ist jetzt auch die Version 14.40.33617.1 installiert, weil die halt über winget kam. Probleme habe ich damit keine bzw. kann keine damit feststellen. Ist aber wohl wirklich die Preview. Ich lasse die jetzt aber mal drauf.