Wer unbedingt gegen die DLL-Version der CRT/MFC linken will/muss, der steht seit dem ATL-Security-Update vor dem Problem, dass neu übersetze Projekte jetzt zwangsläufig die neue CRT-Version im Manifest eingetragen hat. Dieses verhalten wurde von MS einfach so eingeführt, ohne dies zu kommunizieren. Dies hat natürlich zu etwas Kritik geführt. Aber “Security” rechtfertigt ja alles.
Bisher wurde nach einem Update von VS2008 (also z.B. durch das Feature-Pack oder durch den SP1) im Manifest immer noch die Versionsnummer der RTM-Version eingetragen. Deshalb war es auch jetzt sehr verwirrend, dass plötzlich eine neue Version eingetragen wird, ohne dass man irgend etwas am Projekt geändert hat. Bisher war es nötig, dass man als Define ein “_BIND_TO_CURRENT_CRT_VERSION=1” setzt. Erst dann wurde die aktuelle auf dem Enticklungsrechner verwendete Version eingetragen.
Aber nun ist es nunmal anders und wir sind entweder gezwungen das Security-Update von VS2008 nicht einzuspielen (was ich aktuell als einzige Lösung hier im Automatisierungs-Bereich habe, wenn man auch alte Systeme updaten muss) oder auf neuen Systemen das passende vcredist zu installieren.
Update (2011-04-13): Es gibt schon wieder ein Hotfix:
Siehe: MS11-025: Description of the security update for Visual C++ 2008 SP1 Redistributable Package: April 12, 2011
Update (2011-06-11): Es gibt schon wieder ein Hotfix:
Siehe: MS11-025: Description of the security update for Visual C++ 2008 SP1 Redistributable Package: June 14, 2011
Nur jetzt ist wieder die Frage: Welches ist denn nun die “richtige” vcredist…
Hier die Auflistung der aktuell verfügbaren Versionen:
- Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update (2011-06-11)
- Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update
- VC2008 Runtime with SP1 and ATL hotfix
- VC2008 Runtime with SP1
- VC2008 Runtime with Feature Pack
- VC2008 Runtime with ATL hotfix
- VC2008 Runtime (RTM)
Wer ganz sicher gehen will, der sollte ab sofort nur noch das oberste installieren!