Verteilung von VSTO 2005 SE - Lösungen [Teil 3]

Launch Conditions

Doch nun zur eigentlichen Aufgabe, der Installation einer VSTO-Lösung (hier ein Outlook Add-In). Damit die Installationsreihenfolge von abhängigen Komponenten eingehalten wird und diese vor der eigenen Installation überhaupt erst einmal installiert werden, kann man sog. Launch Conditions in einem MSI Paket definieren. Dabei wird auf das Vorhandensein von Dateien, Registry-Einträgen oder MSI Product Codes geprüft. Sind diese da, wird davon ausgegangen, das diese sog. Prerequisites installiert und verwendbar sind. Fällt die Prüfung einer Launch Condition negativ aus, kann das Paket nicht installiert werden.

Eine VSTO-Lösung benötigt immer die .NET Runtime (bei VSTO 2005 SE die Version 2.0) und ebenfalls die VSTO Runtime. Beide müssen installiert sein, damit die Lösung laufen kann. Während der VSTO Project Wizard die Launch Condition für die .NET Runtime schon generiert hat, muss selbige für die VSTO Runtime noch eingetragen werden.

Hier wird davon ausgegangen, dass mit dem Visual Studio Installer gearbeitet wird. Bei Verwendung von Wise für Windows Installer oder InstallShield kann die Arbeitsabfolge anders aussehen. Prinzipiell allerdings gilt das auch für diese beiden.

Zunächst einmal wird das vom Wizard generierte Setup-Projekt im Solution Explorer markiert und der Launch Conditions Editor gestartet (Rechtes Symbol in der Titelzeile des Solution Explorers). Ein Rechtsklick auf Search Target Machine bringt ein Kontextmenü hervor, aus dem in diesem Fall Add Registry Search gewählt wird. Herausgefunden werden muss, ob die Runtime für VSTO 2005 SE installiert ist. Es geht also um die korrekte Version. Das Hinzufügen der o.g. Suche bringt den Eintrag Search for RegistryEntry1, welcher in eine sprechende Bezeichnung umbenannt werden sollte, z.B. Search for VSTO 2005 SE Runtime. Im Eigenschaftsfenster werden nun die gewünschten Einstellungen getätigt (Abb. 4). Diese umfassen eine selbst wählbare Variable, auf die dann das Ergebnis der Tests geschrieben wird und den Registry Key, von dem gelesen werden soll (Root, Key und Value). Nun muss noch der Auswertemechanismus implementiert werden.

Jens Häupel - LC Search Properties Abb. 4: Einstellungen für die Prüfung in einer Launch Condition

Über einen Rechtsklick auf Launch Conditions im rechten Fenster kann eine solche hinzugefügt werden. Sie erscheint als Condition1 und sollte wiederum umbenannt werden, z.B. in „Display message if the VSTO 2005 SE Runtime is not installed“. Auch hier werden im Eigenschaftsfenster die Einstellungen getroffen (Abb. 5), die am Ende bei nicht installierter VSTO 2005 SE Runtime eine entsprechende Meldung auf den Schirm bringen und den Pfad zum Download anbieten sollten. Neben dem Namen, welcher oben schon festgelegt wurde, wird bei Condition die in Schritt 1 festlegte Variable verwendet, um die Version zu prüfen (VSTORTVERSION >=“#1“). Unter InstallUrl wird die URL für den Download bzw. die Installation (z.B. wenn diese im Unternehmen gehostet wird) eingetragen (siehe Kasten: Prerequisites für VSTO-Lösungen). Dann wird noch die anzuzeigende Meldung festgelegt und die Launch Condition ist fertig.

Jens Häupel - LC Message Properties Abb. 5: Auswertung einer Launch Condition

Wenn ein Bootstrapper vorhanden ist, benötigt man normalerweise keine Launch Conditions, da dieser die Prüfung dann selbst vornimmt. Stellt der Bootstrapper fest, das eines der Prerequisite Packages nicht installiert ist, so wird nach einer vorausgehenden Meldung (Abb. 6) das entsprechende Setup gestartet.

Jens Häupel - Bootstrapper Prompt

Abb. 6: Meldung bei nicht vorhandenem Prerequisite Package

+++ Fortsetzung in Teil 4 +++