Tipps & Tricks 13.08.2019, 06:00 Uhr

Wozu all die Visual C++ Redistributables?

Beim Blick in Systemsteuerung/Programme wundern Sie sich über die vielen «Microsoft Visual C++ Redistributable»-Einträge. Was sollen die? Dürfen die weg?
Beim Aufräumen Ihrer installierten Programme fallen Ihnen unter Systemsteuerung/Programme/Programme und Features (Windows 7: Programme und Funktionen) eine ganze Reihe installierter Objekte auf, die Namen wie «Microsoft Visual C++ 2008 Redistributable» mit verschiedenen Jahreszahlen tragen. Zum einen irritieren die teils alten Jahreszahlen, zum anderen missfällt Ihnen auch die Tatsache, dass viele davon doppelt vorhanden zu sein scheinen. Widerstehen Sie aber hier Ihrem Aufräumreflex! Wir erklären, wieso.
Was soll der (scheinbar) uralte Krempel hier?

Woher kommen die denn?

Wer eine Software entwickelt, benutzt hierfür eine Entwicklungsumgebung (englisch Integrated Development Environment, kurz IDE). Das ist – vereinfacht gesagt – die Anwendung, in der man den Programmcode schreibt und zu einem lauffähigen Programm kompiliert.
Unter Windows-Entwicklern ist Microsoft Visual C++ weitverbreitet. Wenn ein Entwickler sein Werk in diesem kompiliert (anwendungsbereit macht) und zu einem Installationsprogramm zusammenschnürt, fügt dieser Vorgang immer auch alle benötigten Laufzeitbibliotheken zum Programm hinzu. Bei der späteren Installation auf dem PC des Benutzers werden diese mitinstalliert und manifestieren sich in Form dieser Visual-C++-Einträge.

Wieso mehrere Jahrgänge?

Genau wie bei anderen Produkten gibts auch von einer Entwicklungsumgebung alle paar Jahre eine Version. Nicht jeder Entwickler legt sich dauernd die neuste IDE zu. Darum arbeiten manche Entwickler mit älteren Versionen von Visual C++. Ausserdem gibt es Programme, die ein paar Jahre lang nicht wesentlich weiterentwickelt werden, weil es von den Funktionen her nicht nötig ist oder weil der Entwickler keine Zeit hat.
Wenn Sie ein solches Programm nutzen, wird jenes auf Ihrem PC weiterhin die passenden älteren Laufzeitbibliotheken benötigen.
Anders als Java (JRE): Stammt Ihr Aufräumwunsch eventuell aus Ihren Erfahrungen mit Java? Hier besteht ein grosser Unterschied zwischen Visual C++ und Java. Anders als etwa beim Java Runtime Environment (JRE, das demselben Zweck für Java-Programme dient), sind die Visual-C++-Bibliotheken nicht rückwärtskompatibel. Das heisst: Wenn ein Programm mit Visual C++ 2008 geschrieben wurde, ist es auf die Dateien aus dem Microsoft Visual C++ 2008 Redistributable angewiesen. Wenn es mit Visual C++ 2013 geschrieben wurde, dann benötigt es die 2013er-Programmbibliotheken – und so weiter. Bei Java-Programmen reicht es für den Endanwender, wenn er die neuste JRE an Bord hat (siehe hierzu auch den Abschnitt «Platzverschwendung?»).

Ist das nicht unsicher? 

Weniger unsicher, als man denkt! Das liegt daran, dass Microsoft für die älteren Visual-C++-Bibliotheken auch weiterhin Updates verteilt. Gerade eben trudelt hier zum Beispiel ein Update bzw. sogar ein Servicepack zu Microsoft Visual C++ 2008 ein.
Windows-Updates gibts auch noch für die 2008er-Version der Microsoft Visual C++ Redistributables
Solange Sie also ältere Programme benutzen oder Programme, die in einer älteren Version der Microsoft'schen Entwicklungsumgebung geschrieben wurden, brauchen Sie die verschiedenen Versionen der Visual-C++-Laufzeitbibliotheken noch.

Platzverschwendung?

Man würde vermuten, dass so viele Laufzeitumgebungs-Versionen einiges an Platz verschwenden. Aber so schlimm ist es eigentlich gar nicht.
Schauen Sie selbst. Ziehen Sie die Spalten in der Programmliste in der Systemsteuerung etwas breiter, sodass Sie auch die Spalte «Grösse» sehen. Falls sie fehlt: Sie lässt sich via Rechtsklick auf einen Spaltentitel und einmal Anhaken einblenden. Jede der installierten Visual-C++-Versionen bewegt sich lediglich in einem Bereich zwischen 10 und 23 Megabyte. Zusammen hier also etwas mehr als 150 Megabyte.
Die einzelnen Pakete mit Visual-C++-Laufzeitbibliotheken sind gar nicht so gross
Unter Windows 10 kommen die neueren Versionen automatisch mit. Und die älteren werden nur installiert, wenn eine Anwendung sie braucht bzw. diese grad selbst mitbringt.
Java – nur zum Vergleich: Wenn man sich dasselbe bei Java anschaut, sieht man, dass dessen Laufzeitumgebungsdateien mehr Platz brauchen. Schon die Downloads der 32-Bit- und 64-Bit-Versionen für die Java-Laufzeitumgebung «wiegen» zusammen 142 Megabyte; im installierten Zustand sogar 227 Megabyte. Das ist deutlich mehr als die gut 150 MB für die Microsoft'schen Pakete. Einer der Gründe dürfte genau in der Rückwärtskompatibilität liegen. 
Es kann also durchaus Vorteile haben, die Laufzeitbibliotheken in verschiedenen Versionspaketen zu verwalten, wie es Microsoft mit den C++-Bibliotheken macht. 

Aber warum alle grad zweifach?

Schauen Sie sich die Bezeichnungen der einzelnen Visual-C++-Objekte unter Systemsteuerung/Programme/Programme und Features genauer an. Auf einem 32-Bit-System werden Sie in der Regel pro Jahresversion nur ein Exemplar haben. Auf einem 64-Bit-System (heute die meisten) haben Sie pro Version beide Varianten. Das liegt daran, dass viele Programme auf einem 64-Bit-System noch mit 32 Bit laufen. Teils gibt es sogar 64-Bit-Programme, die ein paar 32-Bit-Komponenten mitbringen. Deshalb hält man bevorzugt beide Varianten auf dem System bereit.

Deinstallieren oder nicht?

Tun Sie es nicht! Sie gewinnen durchs Deinstallieren von Microsoft Visual C++ Redistributables kaum Platz, riskieren damit aber, dass Programme plötzlich nicht mehr funktionieren.
Natürlich kann es sein, dass eine ältere Version der Microsoft-Visual-C++-Bibliotheken auch mal ungenutzt auf der Festplatte liegen bleibt. Das kann etwa vorkommen, wenn Sie das Programm, mit dem es mitgekommen ist, wieder deinstallieren. Der Uninstaller einer Software entfernt nur das Programm selbst, aber nicht die damit «mitgereisten» Visual-C++-Bibliotheken. Die meisten Programm-Uninstaller können nämlich nicht entscheiden, ob noch ein anderes Programm auf diese Laufzeitbibliotheken angewiesen ist.



Kommentare
Es sind keine Kommentare vorhanden.