VSTO 2010: Multi Target Deployment


Bisher wurde je ein Projekt in ein ClickOnce Package gepackt. Bei mehreren Add-Ins, vielleicht auch noch für verschiedene Anwendungen, wird es schnell unübersichtlich. Jedes Paket muss einzeln getestet werden. Das ändert sich mit VSTO 2010. Nun können mehrere Add-Ins zu einem Paket zusammengefasst werden. Ich will hier einmal beschreiben, welche Schritte dazu nötig sind.

Nehmen wir an, wir haben 2 Lösungen (Excel und Word), die gemeinsam verteilt werden sollen. Zunächst wird ein weiteres Projekt der Solution hinzugefügt (ContosoInstaller), welches die Basis für das gemeinsame Verteilungsprojekt bildet. Das dient nur als Dummy und sollte ein Add-In-Projekt für einen Office Client sein, für den sowieso schon ein Add-In verteilt werden soll (hier Word oder Excel). Benötigt werden nur das Application Manifest (*.manifest) und das Deployment Manifest (*.vsto). Für dieses Projekt wird nun ClickOnce Deployment konfiguriert, also Pre-Requisites, Updateverhalten, Versionierung und die Starteinträge eingestellt.

clip_image002

Für die Einzelprojekte muss noch das Ladeverhalten des Add-Ins festgelegt werden (Publish Options: Beim Start, OnDemand, etc.).

clip_image004

Zu Guter Letzt wird das Publishing aller 3 Projekte durchgeführt.

Nun ist Handarbeit angesagt, denn aus den Application Manifests der beiden Add-In-Projekte müssen Einträge in das Dummy-Manifest kopiert werden, welches damit zum Multi-Add-In-Manifest wird. Wir legen dazu einen neuen Ordner (ContosoInstaller) an, in den folgende Dateien kopiert werden:

  • ContosoInstaller\ContosoInstaller.vsto
  • ContosoInstaller\Application Files\ContosoInstaller_1_0_0_0: Alle Dateien mit dem Suffix .deploy sowie ContosoInstaller.dll.manifest.

Die Ordnerstruktur lassen wir so, wie vom Dummy-Projekt (Publish-Ordner) vorgegeben, sonst müssen noch die Pfade innerhalb der Manifeste geändert werden. Angepasst werden muss u.U. auch die Versionsnummer, welche aber auch über das Dummy-Projekts innerhalb von Visual Studio vor dem Publishing angepasst werden kann.

Alle 3 Application Manifeste werden in nun Visual Studio geöffnet. Aus dem Multi-Add-In-Manifest werden folgende Einträge entfernt:

  • Alle Dependency Einträge, bei denen dependencyType=“install“ ist
  • Alle vstav3:entryPoints (sollte nur einer sein)
  • Alle vstov4:customizations (sollte nur einer sein)

Jetzt geht’s ans Kopieren. Aus beiden Application Manifests werden diejenigen Abhängigkeiten kopiert, deren Typ „Install“ ist.

image

Sie werden am Ende der Dependency Liste Eingefügt, wobei auf Duplikate geachtet werden muss.

Nun werden die Entry Points kopiert (einer pro Projekt). Zu finden sind sie unter vstav3:entryPointsCollection. Sie werden an der gleichen Stelle im Zielmanifest eingefügt. Da es nun aber mehr als einen gibt, muss eine eindeutige ID vergeben werden.

image

Am Ende der Kopiererei müssen die Assemblies noch dem VSTO.V4 Namensraum zugeordnet werden. Das geschieht im Abschnitt vstov4:customizations. Auch hier besteht wieder die Notwendigkeit, eine ID zu vergeben.

image

An Ende müssen die Manifeste noch signiert werden. Dazu wird Mage.exe, das Manifest Generation Tool, benötigt, welches im Windows 7 SDK enthalten ist.

image

Und das Deployment Manifest wird so signiert:

image

(Die drei Punkte im Pfad müssen natürlich durch den korrekten Pfad ersetzt werden.)

Damit ist das ClickOnce Package komplett fertig modifiziert und kann getestet werden.

Comments (0)

Skip to main content