Verteilung von VSTO 2005 SE - Lösungen [Teil 2] - Office Development is more than VBA - Site Home - MSDN Blogs

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

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

  • Comments 1

Bootstrapper

Hin und wieder soll es vorkommen, dass die zu installierende Software andere Pakete voraussetzt. Für individuelle Setup-Pakete ist es dann wichtig, entweder auf die Abhängigkeiten hinzuweisen und die Installation erst zu erlauben wenn die Voraussetzungen erfüllt sind oder die abhängigen Pakete gleich selbst zu installieren. Dafür gibt es sog. Bootstrapper.

In den Eigenschaften des Setup-Projektes findet sich die Möglichkeit, sog. Prerequisites auszuwählen (Abb. 2). Das .NET Framework ist schon selektiert, was dazu führt, das ein Bootstrapper (Setup.exe) zum Setup hinzugefügt und darin auf das Vorhandensein des ausgewählten Packages geprüft wird. Verläuft die Prüfung negativ, wird dotNetFx.exe installiert.

Jens Häupel - Prerequisites
Abb. 2:

Verfügbare Prerequisite Packages in Visual Studio 2005

 

Eigene Bootstrapper

Da die Liste nur Microsoft Standard Packages umfasst, wird ein Weg benötigt, eigene Bootstrapper bauen zu können. David Guyer, Tester im Visual Studio Team, hat dafür ein Tool geschrieben, welches auf CodePlex incl. Source Code verfügbar ist [7]. Mit dem Bootstrapper Manifest Generator (Abb. 3) können eigene Prerequisite Packages gebaut werden, die dann in Visual Studio verwendet werden können (Abb. 2). Im Prinzip geht es darum, sowohl das Product Manifest als auch ein Sprachspezifisches Packet zu erstellen, mit deren Hilfe dann in Visual Studio der Bootstrapper zusammengebaut werden kann.

Das Bauen eines solchen Paketes ist relativ einfach, werden doch einfache binäre Setup-Pakete genauso unterstützt wie MSI und ClickOnce. Ebenso Abhängigkeiten, Bedingungen und System Checks des zu installierenden Prerequisite Packages. Zu den wichtigsten Einstellungen gehören die System Checks und Install Conditions. Erstere erlauben beispielsweise zu überprüfen, ob ein Registry Schlüssel einen bestimmten Wert aufweist, ein MSI Product Code in der Liste der installierten Programme zu finden ist oder ob eine bestimmte Datei vorhanden ist. Dabei wird das Ergebnis der Überprüfung dann auf eine ebenso dort definierte Variable geschrieben, die im nächsten Schritt (Install Conditions) ausgewertet wird. Im Beispiel (Abb. 3) wird auf Adobe Reader 8 geprüft, was die Install Condition dann so aussehen lässt: ByPassIf InstalledVersion >= 524289. Das bedeutet, dass die Installation des Readers übersprungen wird, wenn Version 80001 (hex) gefunden wurde.

Jens Häupel - BMG
Abb. 3:

Bootstrapper Manifest Generator

Der abschließende Build Prozess schreibt das fertige Prerequisite Package in den Ordner \Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bootstrapper\Packages. Unter Windows Vista ist hier Vorsicht geboten, da auch der mit Administratorrechten angemeldete Benutzer erst mal keinen Schreibzugriff auf dieses Verzeichnis hat (Split Token Prinzip). Aber genau da will der Bootstrapper Manifest Generator das erzeugte Package ablegen. Eigentlich macht das auch Sinn, da Visual Studio die dort abgelegten Bootstrapper Packages automatisch erkennt. Resultat ist ein „Build Failed: Access denied.“ Error. Abhilfe bringt das Starten des Bootstrapper Manifest Generator im Kontext des Administrators (Vista Elevation) oder das Umleiten der Ausgabe in ein anderes Verzeichnis und anschließendes manuelles Umkopieren. Ersteres funktioniert aber nur, wenn der Bootstrapper Manifest Generator per MSI installiert wurde und zwar nicht per ClickOnce Deployment, da ClickOnce die Elevation nicht zulässt. An einer Windows Vista-kompatiblen Version wird gearbeitet,

+++ Fortsetzung in Teil 3 +++