Der Vortrag gibt einen kurzen Überblick über die Windows Installer Technologie und zeigt, wie man mithilfe des Windows Installer XML (WiX) Toolsets ein MSI-Paket erstellen und anpassen kann.
5. Alternativen: Windows Installer XML
Toolset
• Seit 5.4.2004 OpenSource Projekt unter dem Dach
der Outercurve Foundation (www.wixtoolset.org)
• Lead: Rob Mensching (www.robmensching.com)
• C# basiertes Toolset zur Erstellung von MSI
Paketen aus XML-Beschreibungen
6. Alternativen: Windows Installer XML
Toolset
• Tools zum Kompilieren und Linken für MSI Pakete
• Burn: Bootstrapper und Chainer
• WiX SDK: Managed und Native Libraries
(z.B. für Custom Actions)
7. Alternativen: Windows Installer XML
Toolset
• Erweiterungen
• Installieren von IIS WebSites
• Erstellen von SQL-Server Datenbanken
• Ausnahmen für die Windows Firewall definieren
• Windows GameCenter nutzen
• …
8. Was brauche ich, um loszulegen?
• WiX Toolset Installer: http://wixtoolset.org/
• Aktuelle Version: 3.7
• Burn-basierter Installer: ~20MB
16. Windows Installer Features
• Installation On Demand
• Features können über die Windows Installer API hinzugefügt werden (von der
Anwendung getriggert)
Produkte können auf Anforderung installiert werden Advertising
• Resource Stability
• „Vital Check“ für Komponenten
1616
17. Windows Installer Features
• Updates & Patches
• Major Upgrade
• Minor Upgrade
• Small Update
• Binary Delta Patches
1717
18. Windows Installer Features
• Transaktional
• Nur ein MSI-Paket kann zu einem Zeitpunkt ausgeführt werden
• Starten eine MSI aus einem anderen MSI nicht möglich (Chainer)
• Bootstrapper notwendig
(Systemvoraussetzungen prüfen und ggf. installieren)
• Rollback
• Wiederherstellen eines konsistenten Zustands im Fehlerfall
1818
19. Windows Installer Features
• Ausführliche Logging Features
• msiexec /i [msifile.msi] /l*v install.log
• Beispiel: install.log
1919
21. Windows Installer Features
• Verifizierbar durch Consistency Checkers
• ICE, internal consistency evaluators
• http://msdn.microsoft.com/en-
us/library/aa369554(VS.85).aspx
• Referenz der ICE Codes:
• http://msdn.microsoft.com/en-
us/library/aa369206.aspx
2121
22. Orca
• Viewer und Editor für MSI Pakete
• Bestandteil des Windows Installer SDK
2222
23. Windows Installer API
• Win32-basierte C-API (msi.h)
• Wrapper für C# in WiX-Toolkit verfügbar
• Hauptzweck: Product Management
• Installation, Deinstallation, Aufzählen von Produkten, Features und
Komponenten
2323
24. Erstellen von MSI Paketen mit
Windows Installer XML
Migration eines Visual Studio Deployment Projects zu einem WiX Projekt
25. WiX Tools im Überblick
• Candle
• Compiler für WiX Source Dateien (.wxs) in Intermediate Object Dateien (.wixobj)
• Light
• Linker und Binder für .wixobj nach .msi
• Lit
• Erzeugt WiX-Bibliotheken
• Dark
• MSI Decompiler (erzeugt aus .msi .wxs)
• Heat
• Harvester: erzeugt .wxs Dateien aus dem Dateisystem, der Registry, COM-DLLs, ..
26. WiX Tools im Überblick
• Melt
• Konvertiert ein “Merge Module” (.msm) in eine Component-Gruppe in einer .wxs-
Datei
• Torch
• Generiert die Transform-Datei für einen Patch
• Smoke
• Führt Validation Checks auf einem .MSI-Paket oder .MSM-Paket aus
• Pyro
• Erzeugt die Patch-Datei (.msp) aus .wixmsp und .wixmst Dateien
• WixCop
• Konvertiert WiX v2 Projekte in WiX v3 Projekte
29. Das WiX Element
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
</Wix>
30. Das Product Element
<Wix ...>
<Product Id="4E8049FC-4899-4A85-970F-61089FAA83A4"
Name="ExampleWixProject"
Language="1033"
Version="1.0.0.0"
Manufacturer="Ralf Abramowitsch"
UpgradeCode="DFFE1A72-E275-4A70-9BDC-5A6CCCA0C292">
</Product>
</Wix>
Product Code
Nur 3 Stellen werden ausgewertet
Identifiziert das Produkt über
Versionen hinweg
31. Das Package Element
<Wix ...>
<Product ...>
<Package Id='PUT-GUID-HERE'
Description='NotePadDNC13'
Manufacturer='Ralf Abramowitsch'
InstallerVersion='200'
Comments='A short description of the product.'
InstallScope='perMachine'
Compressed='yes'
InstallPrivileges='elevated'
Keywords='Installer,MSI,Database' />
</Product>
</Wix>
=msiexec.exe [MajorVersion] * 100 +
[MinorVersion]
Erzwingt Installation mit Admin-Rechten
(UAC)
32. Das Media Element
<Wix ...>
<Product ...>
<Package ... />
<Media Id="1"
Cabinet="contents.cab"
EmbedCab="yes"
CompressionLevel="high" />
</Product>
</Wix>
Disc-ID kann über File referenziert werden
33. Das Directory Element
<Wix ...>
<Product ...>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="MyProgramDir"
Name="ExampleWixProject">
<Directory Id="ASubDir"
Name="MySubDir"/>
</Directory>
</Directory>
</Directory>
</Product>
</Wix>
Hierarchie muss mit TARGETDIR beginnen
34. Das Directory Element
Vordefiniertes Verzeichnis Beschreibung
AdminTools Verzeichnis zu dem Admin-Tools
AppDataFolder Anwendungsdaten des aktuellen Benutzers
CommonAppDataFolder Anwendungsdaten für alle Benutzer
CommonFilesFolder Pfad zu „Gemeinsame Dateien“
DesktopFolder Pfad zum Desktop des aktuellen Benutzers
FavoritesFolder Favoriten des aktuellen Benutzers
FontsFolder Windows Fonts-Verzeichnis
LocalAppDataFolder Lokale Anwendungsdaten des aktuellen Benutzers
MyPicturesFolder Bilder-Ordner
NetHoodFolder Netzwerkumgebung
PersonalFolder „Meine Dokumente“ des aktuellen Benutzers
PrintHoodFolder Drucker
35. Das Directory Element
Vordefiniertes Verzeichnis Beschreibung
ProgramFilesFolder Programme-Verzeichnis für 32-Bit-Programme
ProgramFiles64Folder .. und 64-Bit-Programme
ProgramMenuFolder Start-Menü: Programme
RecentFolder „Zuletzt geöffnete Dokumente“
SendToFolder „Senden An“ im Explorer
StartupFolder Start-Menü
StartMenuFolder Start-Menü-Ordner
SystemFolder C:WindowsSystem32 | C:WindowsSysWow64
System64Folder C:WindowsSystem32 auf x64-Systemen
TempFolder Temporäres Verzeichnis (%TEMP%)
TemplateFolder Vorlagen
WindowsFolder Windows-Ordner
36. Das Components Element
• Container für Dateien, Registry-Einträge, …
• Reference-Counting für Components in der Registry
• Component-Daten werden für Installation, Deinstallation und
Reparatur verwendet
37. Das Components Element
• Container für Dateien, Registry-Einträge, …
• Reference-Counting für Components in der Registry
• Component-Daten werden für Installation, Deinstallation und
Reparatur verwendet
39. Das Feature Element
• Logische Gruppierung von Komponenten
• Feature-Baum
• Features können über Kommandozeile hinzugefügt werden
• msiexec /i notepaddnc13.msi ADDLOCAL=“MyFeature”
• msiexec /i notepaddnc13.msi ADDLOCAL=ALL
40. Das Feature Element
<Feature AllowAdvertise="no"
Id="MyFeature"
Title="NotepadDNC13"
Level="1"
Absent="disallow">
<ComponentRef Id="NotePadCoreBinaries" />
<ComponentRef Id="NotePadHelp" />
</Feature>
46. Dialoge aus WiXUIExtension.dll
anpassen
• Austausch der Lizenzdatei durch eigene Lizenz im RTF-Format
• Austauschen der Bilder
• Anpassen der Texte in den Dialogen
• Anpassen der UI Sequence innerhalb der Dialog-Bibliothek
• Einfügen eigener Dialoge bei Verwendung der Dialog-Bibliothek
51. Das Property Element
• Variablen werden über das Property-Element definiert
• Referenzieren von Properties über eckige Klammern
<Property Id="APPDATAPATH" Secure="yes"/>
<Condition Message="[ProductName] cannot be installed on this operating
system.">
52. Das Property Element
• Setzen von Property-Werten
• Über das Attribut „Value“
• Über das Text-Element
• Über Kommandozeilenargumente von msiexec
msiexec /i [mymsi.msi] APPDATAPATH=“D:”
<Property Id="APPDATAPATH" Secure="yes" Value="D:"/>
<Property Id="APPDATAPATH" Secure="yes">D:</Property >
53. Das Property Element
• Vordefinierte Windows Installer Properties
• Manufacturer
• ProductName
• ProductVersion
• UpgradeCode
• Installed
• Alle vordefinierten Verzeichnisse
• …
• siehe http://msdn.microsoft.com/en-us/library/aa370905%28v=VS.85%29.aspx
54. Das Property Element
• Spezial-Eigenschaften: ARP*
• ARPCONTACT: support@mycompany.com
• ARPURLUPDATEINFO: https://github.com/minibrain
• ARPHELPTELEPHONE: +49-(0)XXX-XXXX-XXX
• ARPINSTALLLOCATION: [INSTALLDIR]
• ARPCOMMENTS: NotePadDnc13 is installed in [INSTALLDIR].
• ARPHELPLINK: [HelpDir]Help.htm
55. Wie geht es weiter?
Zusätzliche Informationsquellen wie Bücher, Blogs, Links und Twitter Accounts.
57. Zusätzliche Informationsquellen
WiX 3.6: A Developer‘s Guide to Windows
Installer XML
von Nick Ramirez
http://www.packtpub.com/windows-installer-
xml-3-6-developers-guide/book
59. Zusätzliche Informationsquellen
The Definite Guide to Windows Installer
Technology
von Darwin Sanoy und Jeremy Moskowitz
http://eddiejackson.net/web_documents/The
_Definitive_Guide_to_Windows_Installer_Tech
nology.pdf