Titel des Vortrags - Bonn-to

Werbung
bonn-to-code.net
MSI Deployment Projekte
Einige kurze Gedanken
22.04.2008
Dr. Jochen Manns
EMail:
Website:
[email protected]
http://www.jochen.jochen-manns.de
bonn-to-code.net
Agenda




Visual Studio und die MSI Datei
Veränderte Installationsabläufe
Veränderte Installationsumgebung
Windows Installer Automation
Hauptziel: es geht weniger um die vorgestellten Detailprobleme
(so schmerzhaft die auch sind, wenn sie einen unvorbereitet treffen),
sondern vielmehr darum, den Hauch eines Gefühls dafür zu bekommen,
was man ohne Kosten und mit wenig Aufwand aus der Visual Studio
Zugabe Deployment Projekt machen kann.
bonn-to-code.net
MSI und Visual Studio
 Deployment Projekte
 Viele Wege, wie man sie erzeugt
 Viele Details, mit denen man sie füttern kann
  das ist aber heute nicht das Thema
 Wat nix kos‘ dat is och nix?





Viele Möglichkeiten der Konfiguration
Eigene Installationskomponenten (na ja)
Wenig Möglichkeit, Abläufe zu beeinflussen
Starke Abhängigkeit vom Hersteller
Aber für den Hausgebrauch viel für lau
bonn-to-code.net
Was ist die MSI Datei?
 Basiselemente sind Tabellen





Steuertabellen mit Abläufen
Tabellen mit Parametern
Datentabellen
Sprachtabellen
…
 Ganz lapidare Antwort: ein Script
 Abläufe aus den Steuertabellen
 Parameter und Daten aus den anderen Tabellen
 Quasi interpretierter p-Code
bonn-to-code.net
bonn-to-code.net
Die Installationsreihenfolge
 Visual Studio 2005
 Alte Version deinstallieren
 Neue Version installieren
 Visual Studio 2008
 Umgekehrt (Begründung: Performance)
 Wann wird eine Datei ersetzt?
 Relevant ist die FileVersion (Voreinstellung)
 Diese ist oft die AssemblyVersion
 Die will man aber vielleicht nicht ändern…
 Bei mir etwa in der Beta-Phase
bonn-to-code.net
bonn-to-code.net
bonn-to-code.net
bonn-to-code.net
Adminstrative Installation
 Läuft nun als LocalSystem (XP)
 Hat immer alle benötigten Rechte
 Gestartet vom MSI Dienst
 Zugriff auf den Desktop möglich
 Wo bleibt der Kontext aktueller Anwender?
 Anwendung startet am Ende der Installation
 Etwa über eine Custom Action
 Sieht ganz normal aus
 Läuft aber als LocalSystem (XP)
 Sieht keine Benutzereinstellungen
bonn-to-code.net
bonn-to-code.net
MSI Automation
 Script fähige COM Komponente
 Es gibt auch eine C++ API
 .NET Wrapper habe ich noch nicht gesehen
 Erlauben den Zugriff auf die MSI Datei




Einfach nur Tabellen auslesen (einfaches SQL)
Tabellen manipulieren
Installation durchführen
Und …
bonn-to-code.net
Einige Objekte für die Automation
 Installer
 Database
 View
 Das Ergebnis eines SQL Befehls
 Record
 Eine Zeile in einem View
 Auslesen und Verändern
 Product
 …
bonn-to-code.net
Dim path
path = “…MSI"
Dim msi
Set msi = CreateObject("WindowsInstaller.Installer")
Dim db
Set db = msi.OpenDatabase(path, 1)
Dim view
Set view = db.OpenView("SELECT `Action`, `Type` FROM `CustomAction` WHERE `Type` = 3585")
view.Execute
Do While (true)
Dim Record
Set Record = view.Fetch
If (Record Is Nothing) Then Exit Do
Dim action
action = Record.StringData(1)
Dim inner
Set inner = db.OpenView("SELECT `Target` FROM `CustomAction` WHERE `Source` = '" + action + "'")
inner.Execute
Dim args
args = inner.Fetch.StringData(1)
inner.Close
If (InStr(1, args, "/StartMgr=") > 0) Then
Record.IntegerData(2) = &h601
view.Modify 2, Record
Exit Do
End If
Loop
view.Close
db.Commit
bonn-to-code.net
Weitere Informationen
 Beschreibung der MSI Tabellen (MSDN)
 http://msdn2.microsoft.com/en-us/library/cc185688(VS.85).aspx
 Windows Installer Automation
 http://msdn2.microsoft.com/en-us/library/aa369432(VS.85).aspx
 Mein Blog
 http://jochen.jochen-manns.de/index.php/2008/02/29/spas-mitvisual-studio-2008-hier-deployment-projekte/
Herunterladen