App-V und VCRedist


Die Visual C++ Runtime und ihr Verhältnis zu App-V

  1. Was ist VCRedist
  2. VCRedist Versionen
  3. Was bedeutet das nun für App-V?

Was ist das: Einfach gesagt ein Framework für Programme die mit Visual Studio geschrieben wurden. Damit werden globale Funktionen, die von eben diesem Framework bereit gestellt werden, den erstellten Programmen zur Verfügung gestellt.

  • Oder wie Microsoft es erklärt:
    Mit Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) werden Laufzeitkomponenten von Visual C++-Bibliotheken installiert, die erforderlich sind, um Anwendungen, die in Visual C++ entwickelt wurden, auf einem Computer auszuführen, auf dem Visual C++ 2005 nicht installiert ist.

Jede Visual Studio Version hat Ihre Runtime, und dabei gilt das Highländer Prinzip – es kann nur eine(n) geben. Smiley

Visual Studio .Net 2002 Version 7
Visual Studio .Net 2003 Version 7.1
Visual Studio 2005 Version 8
Visual Studio 2008 Version 9
Visual Studio 2010 Version 10
Visual Studio 2012 Version 11
Visual Studio 2013 Version 12
Visual Studio 2015 Version 14
Visual Studio 15 Version 15

 

“Unsinnigerweise” bleiben die Installationseinträge der einzelnen Versionen der VCRedists in der Programmliste der Systemsteuerung stehen. So ergibt sich im Laufe der Zeit eine mehr oder minder lange Liste der VC Redist Installationen.

image

Hier eine Auswahl von Versionen die sich auf meiner Maschine angesammelt haben. Und bei einer x64 Installation hat man da eben auch noch die x86 Versionen dabei. Wurde ein oder mehrere Visual Studio installiert, gibt es als besonderen Bonbon noch die Designtime Versionen der Runtime.

Je nach Installationsmedium löscht jetzt wenigstens die 2010 er SP1 Version den Installationsverweis auf die RTM Version. Ab Version 2103 sollte es jetzt meistens mit dem Update auch in Programme und Funktionen mit dem Update funktionieren.

Schaut man jetzt nach, was eine VCRedist überhaupt installiert, so gibt es eine Hauptkomponente. Die MSDIAxxx.DLL im Ordner %commonprogramfiles%\microsoft shared\vc

image

image

Wobei die VC 2005 X64 Version ein besonderes Süppchen kocht und sich im x86 Teil versteckt.

image

Es gab auch Installationsversionen der VCRedist für die 2005 Version, die legten die msdia80.dll ins Rootverzeichnis der Platte mit dem meisten Platz. Wo man sie natürlich als Irrläufer schnell mal gelöscht hat. Wobei dann davon abhängige Programme nicht mehr, bis gar nicht mehr funktionierten.

Nimmt man jetzt die Installationsdateien der einzelnen VC Redist Versionen auseinander, erhält man noch einige Dateien, mal von der msdia abgesehen, die sich in den Installationspaketen verstecken.

Hinweise zum Sicherheitsupdate für Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package vom 28. Juli 2009 im Vergleich zu den Dateien der aktuellen Version MS11-025: Hinweise zum Sicherheitsupdate für Visual C++ 2010 Service Pack 1: 09. August 2011

Und da kommen wir zum zweiten Teil der VCRedist Dateien die sich unter %Systemroot%\WinSXS einnisten. Den ATLs (Active Template Library) und MFCs (Microsoft Foundation Classes)

Eigentlich ist jede VCRedist Version sprachunabhängig, bzw. die msdiaxx.dll hat ja gar keine Sprache. Welche Sprachversion man installiert ist egal, wenn man die unterschiedlichen Installationsdialoge und Lizenzdialog mal außen vor lässt.

Die Visual Studio .Net 2002/3 benannten Versionen haben noch keine Redistributables die separat ausgeliefert werden. Hier wird die Runtime noch mit in die Installationsroutine des Programmes gepackt. Erkennbar an den atl71 und mfc71 Dateien.
MS11-025: VS 2003 SP1. In diesen Versionen wurden die Installationroutinen mit den passenden Mergemodulen (msm) erweitert. Zu diesen älteren Versionen später mehr.

Und die 2010 Versionen wird man auch nicht wieder nur durch Deinstallation der VCRedist Installationen in der Systemsteuerung wieder los. Durch das Update werden nämlich noch Security Updates installiert, die im Hintergrund auch nach der Deinstallation der VCRedist 2010 Versionen in der Systemsteuerung erhalten bleiben.

Hat man im Windows Update (WSUS) die Erweiterung auf die Microsoft Updates erweitert, werden auch die Security Updates auf die jeweils letzte aktuelle Version angeboten. Derzeit sind das die Updates aus MS11-025 vom 09.07.2011 mit den KB Nummern
http://support.microsoft.com/kb/2538242 für VCRedist 2005
http://support.microsoft.com/kb/2538243 für VCRedist 2008
http://support.microsoft.com/kb/2467173 für VCRedist 2010 http://www.microsoft.com/en-us/download/details.aspx?id=30679 für VCRedist 2012 Update 3

Und mit der nächsten Visual Studio Version kommt auch die nächste VCRedist Version
http://www.microsoft.com/de-de/download/details.aspx?id=39315 für Visual C++ Redistributable für Visual Studio 2013 Preview

für die aktuellsten VCRedist Versionen. –> Microsoft Knowledgebase Zusammenfassung


Was bedeutet das nun für App-V?

Da zumindest die VCRedist 2005 bei der Installation des Sequencers installiert wird – und in vielen Fällen (die mit VMWare Workstation Tools arbeiten) die VCRedist 2008 installiert haben, und im Anschluss das System per WSUS / Windows Update auf den aktuellen Stand patchen – haben danach die derzeit aktuellsten VCRedist Version aus dem Securitypatch MS11-025 installiert. Und mit APP-V 5 kommt dann auch die Version 2010 mit ins Angebot.

Hätten sich die Programmierer jetzt daran gehalten alles dynamisch zu binden, so würde die jeweils letzte VCRedist Version reichen. Doch dem ist nicht so. Installiert man auf dem Sequencer die jeweils aktuellsten Versionen, starten manche Programme trotzdem ihre VCRedist. bzw. starten die Installation immer. In vielen Fällen, wird jedoch gar nichts passieren, da die aktuelle Version korrekterweise nicht überschrieben wird. Doch wie die Erfahrung zeigt, ist ja nicht immer alles korrekt. Manche Hersteller bauen jedoch die VCRedist Dateien mit in ihre Installationsroutinen (MSI) mit ein. Das hat dann im ungünstigsten Fall zur Folge, das eine aktuellere VCRedist Version wieder überschrieben wird. Was dann ein Security Problem darstellt, da die Updates auf die VCRedist Versionen Sicherheitslöcher im Framework stopfen.

Betrachtet man nun die VCRedist Versionen als Bestandteil des Betriebssystem, sollten die aktuellen Versionen im Image ausgerollt werden. Somit können wir uns darauf verlassen, das jedes APP-V Paket (in Bezug auf die VCRedist Abhängigkeit) läuft. Damit sollten wir auch auf unserem Sequencer alle (aktuellen) VCRedist Versionen installieren. Spielt jetzt die Installationsroutine der zu sequencenden Anwendungen falsch, werden die anwendungsspezifischen Änderungen im Paket aufgezeichnet. Läuft alles korrekt, verlässt sich die Anwendung auf die installierte Version im Client. Werden die VCRedist Versionen durch Microsoft gepatcht, gilt dies somit auch für alle APP-V Pakete. Die spezifischen Besonderheiten, die eine Anwendung für sich im Paket gespeichert hat, bleiben ja bestehen und die Anwendung funktioniert weiter.

Lasst euch also nicht von der Vielzahl der VCRedist Versionen in die Irre führen.

Eine Anmerkungen zu den Versionen vor 2005:

Hat man auf seiner Sequencer Maschine schon Programme installiert, die sich auf die älteren Frameworks von Visual Studio 2000 oder 2003 berufen, so werden diese vom Sequencer nicht mit ins Paket genommen. Die entsprechenden Dateien sind ja auf dem Sequencer vorhanden, werden nicht geändert und somit nicht im Paket aufgezeichnet. Sind diese Anwendungen auch dauerhaft auf den APP-V Clients installiert, werden die Pakete funktionieren, da ja alle Dateien vorhanden sind.

Ein Beispiel:

Auf Grund der Security Richtlinie ist auf dem Sequencer wie auf dem Client der Symantec Virenscanner installiert. Und damit auch das 2003er Framework (atl71.dll). Wird jetzt eine Anwendung gesequenced, die auch das 2003er Framework beinhaltet, so ist Dieses nicht im Paket enthalten! Ist ja nicht weiter schlimm, der Symantec Virenscanner ist ja auch auf dem Client vorhanden, und damit auch das Framework. —  Was passiert aber, wenn statt dem Symantec Virenscanner nun ein anderer Virenscanner auf den Clients installiert wird. Nach der vollständigen Deinstallation vom Virenscanner ist ja auch das 2003er Framework weg.

Das Ergebnis sind nicht mehr lauffähige Pakete, die z.B. dann nach der atl71.dll schreien – oder eben sang und klanglos gar nicht mehr funktionieren.

Auf der Sequencer Maschine installierte Programme können also Auswirkungen haben, die lange still und heimlich dahinschlummern.

Advertisements
Dieser Beitrag wurde unter App-V Background, Softgrid Info abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort zu App-V und VCRedist

  1. Johng477 schreibt:

    Valuable information. Fortunate me I discovered your web site by chance, and I am surprised why this coincidence didn’t happened in advance! I bookmarked it. keecbfbdafcc

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s