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

Build und PostBuild und ein paar Bugs

Damit ist es geschafft. Fast zumindest. Das Projekt kann kompiliert werden. Es wird aber auf den meisten Systemen nicht installiert werden können. Beim Installieren unter Windows Vista erscheint eine Fehlermeldung kurz vor Ende der Installation: Error 2867. Oder auch Error 2869 und zwar ohne weitere Erklärung. Die Ursache ist der Visual Studio Installer, der einerseits einen Eintrag in der Error Table vergessen hat und desweiteren eine Verhaltensweise des Windows Installers, der die Custom Actions im Kontext des angemeldeten Benutzers ausführt. Und zwar unabhängig von einem evtl. erscheinenden Elevation Prompt des User Account Controls (UAC). Um Code Access Security setzten zu dürfen, benötigt man allerdings entsprechende Rechte, die der Standard User nicht hat. Somit schlägt die Ausführung der Custom Action fehl.

Im verbose Log des MSI (msiexec /i MyInstaller.msi /L*v Logfile.log) steht dann etwas von „ActionType=1025“. Das setzt sich zusammen aus: msidbCustomActionTypeInScript (1024) + (bzw. OR) msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData (1) und sollte dem Entwickler sagen, dass etwas fehlt.

Um das Problem zu lösen, muss die Typinformation der Custom Action um msidbCustomActionTypeNoImpersonate (2048) erweitert werden. Daraus ergibt sich Typ 3073. Damit wird der Custom Action (InstallUtil) Process nicht impersoniert und läuft mit den erforderlichen Rechten. Der Typ kann auch für die UnInstall Custom Action verwendet werden. Für die RollBack Custom Action kommt noch msidbCustomActionTypeRollback (256) hinzu, was dann zum Wert 3329 führt.

Die Änderungen lassen sich leider nicht direkt im Visual Studio Installer durchführen, sondern man muss sich ein Tool aus dem MSI SDK (Bestandteil des Windows Plattform SDK) namens ORCA (nicht zu verwechseln mit ORCAS, dem Codenamen der nächsten Version von Visual Studio) holen. ORCA ist ein Editor für die in einem MSI Paket enthaltene relationale Datenbank. Damit kann das fertige MSI Paket geladen und modifiziert werden (in diesem Fall die CustomActions Table).

Die zweite Änderung betrifft die Error Table. Dort wurde nämlich vergessen, auftretende Fehler auch ans User Interface weiter zu geben. Ein Eintrag mit Error = „1001“ und Message = „Error [1]: [2]“ behebt die Misere.

In Visual Studio 2008 sind diese Probleme übrigens behoben.

Software Life Cycle

Dank Visual Studio Tools for Office, Managed Code und Entwicklung in Visual Studio selbst ist auch die reibungslose Integration von Office-Lösungen in den Software Life Cycle gegeben. Visual Studio Team System und Team Foundation Server benötigen keiner besonderen Vorbereitung. So ist Ihr Source Code in besten Händen und Testszenarien können ebenso aufgebaut werden wie Implementierungsregeln. It’s just managed Code.

Fazit

Das Deployment von Lösungen auf Basis von VSTO ist einfacher geworden, wenn auch nicht ganz ohne Probleme. Weiß man allerdings um die wenigen Klippen, kann man sich viele Stunden des Suchens ersparen. Sicherlich ist die Versionsabhängigkeit von VSTO in Bezug auf Office ein Problem (VSTO 2.0 gegen Office 2003, VSTO 2005 SE gegen Office 2007, dokumentzentrische Projekte müssen aber generell mit VSTO 2.0 gegen Office 2003 geschrieben werden, laufen aber unter der Runtime von SE und gegen Office 2007…). VSTO 3.0 wird Office 2003 und 2007 unterstützen und vollständig im neuen Visual Studio 2008 (Professional Edition) enthalten sein. Damit ist dann auch das letzte Missverständnis um den Inhalt der Pakete (VSTO 2.0 ist eigentlich ein Visual Studio Pro mit VSTO aber ohne Mobility-Entwicklung und VSTO 2005 SE ist ein kostenloses Add-On für Visual Studio 2005) ausgeräumt sein.

Prerequisites für VSTO-Lösungen

.NET Framework 2.0

https://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5

VSTO 2005 SE Runtime (unterstützt ebenfalls VSTO 2.0)
https://www.microsoft.com/downloads/details.aspx?FamilyId=F5539A90-DC41-4792-8EF8-F4DE62FF1E81

Office Primary Interop Assemblies (Sind Bestandteil von Office, aber nicht überall installiert, da eine Installation das .NET Framework voraussetzt)

https://www.microsoft.com/downloads/details.aspx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513

Links & Literatur

[1] Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer
https://msdn2.microsoft.com/en-us/library/bb332051.aspx
https://msdn2.microsoft.com/de-de/library/bb332051.aspx

https://msdn2.microsoft.com/en-us/library/bb332052.aspx
https://msdn2.microsoft.com/de-de/library/bb332052.aspx

[2] Deploying Office Solutions
https://msdn2.microsoft.com/en-us/library/hesc2788(VS.80).aspx

[3] CasPol.exe
https://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/cptools/html/cpgrfCodeAccessSecurityPolicyUtilityCaspolexe.asp

[4] Deployment Models
https://msdn2.microsoft.com/en-us/library/7b37fkst(VS.80).aspx

[5] Application Manifest Editor Sample
https://msdn2.microsoft.com/en-us/library/ms268756(VS.80).aspx

[6] Smart Client Offline Application Block
https://www.microsoft.com/downloads/details.aspx?FamilyId=BD864EB5-56B3-43A5-A964-6F23566DF0AB

[7] Bootstrapper Manifest Generator
https://www.codeplex.com/bmg

[8] Was darf mein Code? - Das Sicherheitsmodell der Common Language Runtime
https://www.microsoft.com/germany/msdn/library/security/WasDarfMeinCodeDasSicherheitsmodellDerCommonLanguageRuntime.mspx

[9] Sicherheit in Office-Projektmappen
https://msdn2.microsoft.com/de-de/library/k64zb6we(VS.80).aspx

+++ Ende der Serie +++