{"id":219548,"date":"2019-06-21T00:35:00","date_gmt":"2019-06-20T22:35:00","guid":{"rendered":"https:\/\/www.borncity.com\/blog\/?p=219548"},"modified":"2024-08-23T22:35:15","modified_gmt":"2024-08-23T20:35:15","slug":"vc-2019-das-ende-des-ms-c-redistribution-chaos","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2019\/06\/21\/vc-2019-das-ende-des-ms-c-redistribution-chaos\/","title":{"rendered":"VC ++ 2019: Das Ende des MS C++ Redistribution Chaos?"},"content":{"rendered":"<p>[<a href=\"https:\/\/borncity.com\/win\/?p=10172\" target=\"_blank\" rel=\"noopener noreferrer\">English<\/a>]Kleine Meldung zum Thema C++ Runtime-Bibliotheken und deren Verteilung als Redistribution-Pakete mit allen Problemen einer Side-by-side-Installation mit unterschiedlichen Versionen. Microsoft hat bei der Visual C ++ 2019 Redistributable auf Kritik reagiert und verwendet die gleichen Dateien wie f\u00fcr VC++ 2015\/2017.<\/p>\n<p><!--more--><\/p>\n<h2>Worum geht es?<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vg07.met.vgwort.de\/na\/67f42d673a35443da6ade6b50817183e\" alt=\"\" width=\"1\" height=\"1\" \/>Die meisten Programme ben\u00f6tigen Laufzeitbibliotheken, um ausgef\u00fchrt zu werden. Bei Visual C++ ist das die Redistributables (Runtime-Bibliotheken), die mit der jeweiligen Anwendung mit installiert werden. Werden VC++Runtime-Bibliotheken durch Sicherheitsupdates aktualisiert, installiert Windows diese in den meisten F\u00e4llen Side-by-Side.<\/p>\n<blockquote><p>Warum die Laufzeitbibliotheken Side-by-Side installiert werden, habe ich im Blog-Beitrag <a href=\"https:\/\/borncity.com\/blog\/2016\/12\/15\/windows-10-fehler-side-by-side-konfiguration-ungltig\/\">Windows 7\/8.1\/10: Fehler Side-by-Side-Konfiguration ung\u00fcltig<\/a> in anderem Zusammenhang erl\u00e4utert.<\/p><\/blockquote>\n<p>In kurz: Laufzeitbibliotheken werden zentral gespeichert, damit die Anwendungen nicht jedes Mal die gleichen DLLs separat in Programmordner installieren m\u00fcssen. Man kann durch gemeinsame Nutzung der Bibliotheken Speicherplatz sparen.<\/p>\n<p>Das Problem: Verwenden zwei Anwendungen unterschiedliche Versionen einer Laufzeitbibliothek, k\u00e4me es zu Konflikten, wenn die zuletzt installierte Anwendung einfach die bereits vorhandenen Runtime-Dateien \u00fcberschreiben w\u00fcrde.\u00a0 Dann kommt es bei der Installation der Anwendung zu einem Konflikt, der fr\u00fcher als \"DLL hell\" bekannt war.<\/p>\n<p>Um dieses dieses Problem elegant zu umgehen, wurden die Side by Side-Konfiguration im Ordner <em>WinSxS <\/em>(<em>Windows component store<\/em>) eingef\u00fchrt. Bei der Installation einer Anwendung werden die Laufzeitbibliotheken, DLLs, und ggf. andere Ressourcen, in einem eigenen Unterordner des Ordners <em>WinSxS <\/em>gespeichert. Dadurch behindern sich nicht mehrere Dateien gleichzeitig. Weitere Insides finden sich im genannten Blog-Beitrag.<\/p>\n<p>In der Praxis f\u00fchrt das aber zu vielf\u00e4ltigen Problemen \u2013 u.a. das unsichere, l\u00e4ngst gepatchte Versionen, \u00fcber Software und Updates auf einem Rechner landen. Ich hatte dies, mit Hilfe von Blog-Leser Karl, in einer Artikelreihe <a href=\"https:\/\/borncity.com\/blog\/?p=197680\">Das Problem mit C++ Redists &amp; 3rd Party Sicherheitspatches<\/a><a href=\"https:\/\/borncity.com\/blog\/?p=197680\"> \u2013 Teil 1<\/a> angesprochen. Wir hatten das auch an Microsoft herangetragen.<\/p>\n<h2>Runtime f\u00fcr VC++ 2019 mit V2015\/2017<\/h2>\n<p>Das scheint am Ende des Tages Fr\u00fcchte getragen zu haben. Blog-Leser Karl hat mich gestern auf Twitter \u00fcber eine \u00c4nderung informiertaufgekl\u00e4rt, die Microsoft mit der Runtime f\u00fcr VC++ 2019 einf\u00fchrt.<\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"de\">\n<p dir=\"ltr\" lang=\"en\">All that care to manage C++ redists MS has released C++ 2019 which will include and replace 2015 and 2017.<br \/>\nGreat work as this finally ends the side by side installation of outdated redists by software. All in one Runtimes isn't yet updated.<a href=\"https:\/\/twitter.com\/ComputerBase?ref_src=twsrc%5Etfw\">@ComputerBase<\/a><br \/>\nFyi <a href=\"https:\/\/twitter.com\/etguenni?ref_src=twsrc%5Etfw\">@etguenni<\/a><\/p>\n<p>\u2014 al Qamar (Karl) (@tweet_alqamar) <a href=\"https:\/\/twitter.com\/tweet_alqamar\/status\/1141590957047107584?ref_src=twsrc%5Etfw\">20. Juni 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Wer sich mit der Verwaltung der VC ++ Redistributables k\u00fcmmern muss, bekommt jetzt Entlastung (falls Microsoft seinen Job richtig macht \u2013 muss man abwarten). In der neu erscheinenden Laufzeitumgebung f\u00fcr C++ 2019 ist, laut dem obigen Tweet, auch die Redistributable von VC++ 2015 und von VC++ 2017 enthalten. Microsoft hat dazu Ende Mai 2019 <a href=\"https:\/\/support.microsoft.com\/de-de\/help\/2977003\/the-latest-supported-visual-c-downloads\" target=\"_blank\" rel=\"noopener noreferrer\">diesen KB-Artikel<\/a> ver\u00f6ffentlicht. Zitat aus dem Beitrag:<\/p>\n<blockquote><p><strong>Hinweis <\/strong>Visual C++ 2015, 2017 und 2019 haben alle die gleichen weitervertreibbaren Dateien.<\/p>\n<p>Das Installieren der Visual C++ 2019 Redistributable wirkt sich beispielsweise auf Programme aus, die mit Visual C++ 2015 und 2017 erstellt wurden. Die Installation der Visual C++ 2015 Redistributable ersetzt jedoch nicht die neueren Versionen der von Visual C++ 2017 und 2019 Redistributables installierten Dateien.<\/p>\n<p>Dies unterscheidet sich von allen fr\u00fcheren Visual C++-Versionen, da sie jeweils ihre eigenen Runtime-Dateien hatten, die nicht mit anderen Versionen geteilt wurden.<\/p><\/blockquote>\n<p>Damit muss man sich nicht mehr um diese beiden letztgenannten Fassungen k\u00fcmmern. Bei den Runtime-Bibliotheken von VC ++ 2013 oder fr\u00fcher \u00e4ndert sich aber nichts. In einer pers\u00f6nlichen Mail informierte Karl mich \u00fcber folgendes:<\/p>\n<blockquote><p>Die Neuerung gibt es \u00fcbrigens schon seit C++ 2017 (14.10 \/ 14.16) die zum ersten Mal in der Geschichte die C++ 2015 (14.0) ersetzt.<\/p>\n<p>In der Praxis gab es damit jedoch Probleme mit einigen Programmen die mit 2015 kompiliert worden sind. Es gab jedoch nochmal ein Update f\u00fcr die 2017 Runtimes und nun die 2019 (14.21) ich werde die demn\u00e4chst bei dem Kunden mit den Problemen ausrollen und schauen ob es dann weniger Probleme gibt. Es war f\u00fcr mich ein Novum, dass es mit neueren Runtimes \u00fcberhaupt \u201eStress\" gibt. Wahrscheinlich schlechter Code.<\/p>\n<p>Gerade bei 2013 oder \u00e4lter kommt es durch Applikationen oder Spiele (Steam) immer wieder zu ersetzten Runtimes.<\/p>\n<p>Das Problem wird sich aber wohl mit der Zeit erledigen wenn man nur neue Applikationen nutzt. 2005 sind wohl schon out of support und 2008 glaube ich. Was nicht hei\u00dft das ich diese dann nicht mehr installieren w\u00fcrde<\/p>\n<p>Es ist allemal besser die letzten aktuellen Runtimes zu installieren, als gar keine was dann f\u00fcr noch \u00e4ltere Installationen sorgt \u2013 je nachdem wie die ihre Installerpr\u00fcfung programmiert haben \u2013 also gleich oder neuer: belassen \/ \u00e4lter: side by side installieren<\/p><\/blockquote>\n<p>Zudem weist Karl darauf hin, dass es seit C++ 2008 keine Updates mehr f\u00fcr C++ \u00fcber Windows Update \/ WSUS gibt. Er schreibt auch:<\/p>\n<blockquote><p>Windows Update f\u00fcr Business patcht ohnehin nur Windows Komponenten. C++ w\u00e4re also 3rd Party-Software. Bis heute werden \u00fcber die Microsoft Downloadseiten und Windows Update veraltete C++ 2005, 2008 und 2012 redists verteilt. Jedenfalls \u00e4ltere als die in my.visualstudio.com erh\u00e4ltlichen bzw. \u00fcber Patrick Kuhnke AIO runtimes erh\u00e4ltlichen. Ich denke es will sich darum auch keiner mehr k\u00fcmmern und man l\u00e4sst es so aussterben.<\/p><\/blockquote>\n<p>Karl hat auf Twitter dann noch ein paar Screenshots gepostet, wie ein ges\u00e4ubertes System ausschauen sollte.<\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"de\">\n<p dir=\"ltr\" lang=\"en\">This is how it should look like in with a cleaned \/ secure environment (AIO Runtime 2.4.8 C++ &amp; C++ 2019) AIO will remove insecure C++ redists as Windows Update still won't update them correctly. some of the updates here are outdated, too.<a href=\"https:\/\/t.co\/BIIBbV8RsV\">https:\/\/t.co\/BIIBbV8RsV<\/a> <a href=\"https:\/\/t.co\/G39J2RzmQ3\">pic.twitter.com\/G39J2RzmQ3<\/a><\/p>\n<p>\u2014 al Qamar (Karl) (@tweet_alqamar) <a href=\"https:\/\/twitter.com\/tweet_alqamar\/status\/1141790611982422016?ref_src=twsrc%5Etfw\">20. Juni 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Das K\u00fcrzel AIO steht f\u00fcr All in One Runtime, die von Patrick Kuhnke gepflegt wird. Das hatte ich im Blog-Beitrag <a href=\"https:\/\/borncity.com\/blog\/?p=197688\">Das Problem mit C++ Redists &amp; 3rd Party Sicherheitspatches<\/a><a href=\"https:\/\/borncity.com\/blog\/?p=197680\"> \u2013 Teil 3<\/a> mit Unterst\u00fctzung von Karl schon mal thematisiert.<\/p>\n<p><strong>\u00c4hnliche Artikel:<\/strong><br \/>\n<a href=\"https:\/\/borncity.com\/blog\/2016\/12\/15\/windows-10-fehler-side-by-side-konfiguration-ungltig\/\">Windows 7\/8.1\/10: Fehler Side-by-Side-Konfiguration ung\u00fcltig<\/a><br \/>\nCitrix Workspace-App ab V1904 ohne VC++ Runtime<br \/>\n<a href=\"https:\/\/borncity.com\/blog\/?p=197680\">Das Problem mit C++ Redists &amp; 3rd Party Sicherheitspatches<\/a><a href=\"https:\/\/borncity.com\/blog\/?p=197680\"> \u2013 Teil 1<br \/>\n<\/a><a href=\"https:\/\/borncity.com\/blog\/?p=197682\">Das Problem mit C++ Redists &amp; 3rd Party Sicherheitspatches<\/a><a href=\"https:\/\/borncity.com\/blog\/?p=197680\"> \u2013 Teil 2<br \/>\n<\/a><a href=\"https:\/\/borncity.com\/blog\/?p=197688\">Das Problem mit C++ Redists &amp; 3rd Party Sicherheitspatches<\/a><a href=\"https:\/\/borncity.com\/blog\/?p=197680\"> \u2013 Teil 3<\/a><br \/>\n<a href=\"https:\/\/borncity.com\/blog\/2018\/08\/22\/sicherheit-microsoft-visual-c-runtime-kommt-mit-alten-wix-installern\/\">Sicherheit: Microsoft Visual C++ Runtime kommt mit alten Wix-Installern und Schwachstellen<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[English]Kleine Meldung zum Thema C++ Runtime-Bibliotheken und deren Verteilung als Redistribution-Pakete mit allen Problemen einer Side-by-side-Installation mit unterschiedlichen Versionen. Microsoft hat bei der Visual C ++ 2019 Redistributable auf Kritik reagiert und verwendet die gleichen Dateien wie f\u00fcr VC++ 2015\/2017.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[4293,3288],"class_list":["post-219548","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-allgemein","tag-windows-en"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/219548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=219548"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/219548\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=219548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=219548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=219548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}