Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Einstieg in das Windows Installer XML (WiX) ToolSet

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Hier ansehen

1 von 69 Anzeige

Einstieg in das Windows Installer XML (WiX) ToolSet

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.

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.

Anzeige
Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (20)

Anzeige

Ähnlich wie Einstieg in das Windows Installer XML (WiX) ToolSet (20)

Aktuellste (20)

Anzeige

Einstieg in das Windows Installer XML (WiX) ToolSet

  1. 1. Einstieg in das Windows Installer XML Toolset (WiX) Ralf Abramowitsch ralf@abramowitsch.de | @minibrain81 | http://minibrain.wordpress.com
  2. 2. Die Software ist fertig … … jetzt muss sie „nur“ noch ausgeliefert werden.
  3. 3. Visual Studio Deployment Projects gibt es in VS2012 leider nicht mehr …
  4. 4. Alternativen: Flexera InstallShield LE
  5. 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. 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. 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. 8. Was brauche ich, um loszulegen? • WiX Toolset Installer: http://wixtoolset.org/ • Aktuelle Version: 3.7 • Burn-basierter Installer: ~20MB
  9. 9. Kurzeinstieg in Windows Installer Grundlagen: Windows Installer und MSI Packages
  10. 10. Windows Installer Grundlagen 1010 Windows Installer Client Windows Installer Service Windows Installer Package
  11. 11. Konzept eines Windows Installer Package 11 Resource Component Feature Product NotePad Core NotePad Notepad.exe UserReg HKLM Software … Docs HelpDocs HowTo.pdf
  12. 12. Konzept eines Windows Installer Package 12 Resource Component Feature Product NotePad Core NotePad Notepad.exe UserReg HKLM Software … Docs HelpDocs HowTo.pdf
  13. 13. Konzept eines Windows Installer Package 13 Resource Component Feature Product NotePad Core NotePad Notepad.exe UserReg HKLM Software … Docs HelpDocs HowTo.pdf
  14. 14. Konzept eines Windows Installer Package 14 Resource Component Feature Product NotePad Core NotePad Notepad.exe UserReg HKLM Software … Docs HelpDocs HowTo.pdf
  15. 15. Bekannte Dateiendungen 1515 Endung Abkürzung .msi Managed Software Installation .msm Managed Software Merge Module .msp Managed Software Patch .mst Managed Software Transformation
  16. 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. 17. Windows Installer Features • Updates & Patches • Major Upgrade • Minor Upgrade • Small Update • Binary Delta Patches 1717
  18. 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. 19. Windows Installer Features • Ausführliche Logging Features • msiexec /i [msifile.msi] /l*v install.log • Beispiel: install.log 1919
  20. 20. Windows Installer Features • Verwendung von Systemwiederherstellungspunkten 2020
  21. 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. 22. Orca • Viewer und Editor für MSI Pakete • Bestandteil des Windows Installer SDK 2222
  23. 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. 24. Erstellen von MSI Paketen mit Windows Installer XML Migration eines Visual Studio Deployment Projects zu einem WiX Projekt
  25. 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. 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
  27. 27. Quelle: http://wix.sourceforge.net/manual-wix3/tools.htm
  28. 28. Wichtige WiX Kommandozeilen Tools Setup.wxs Candle.exe Setup.wixobj Light.exe Setup.msi
  29. 29. Das WiX Element <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> </Wix>
  30. 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. 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. 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. 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. 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. 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. 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. 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
  38. 38. Das Component Element <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLLOCATION" Name="NotePadDnc13"> <Component Id="NotePadCoreBinaries" Guid="80CE23D9-0CD4-42C3-A568-0DEA614C3B00"> <File Id="NotePadExe" Source="..BinariesReleaseNotePad.exe" /> </Component> </Directory> </Directory> </Directory>
  39. 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. 40. Das Feature Element <Feature AllowAdvertise="no" Id="MyFeature" Title="NotepadDNC13" Level="1" Absent="disallow"> <ComponentRef Id="NotePadCoreBinaries" /> <ComponentRef Id="NotePadHelp" /> </Feature>
  41. 41. Demo Der erste WiX Installer
  42. 42. Dialoge
  43. 43. Dialoge • Verwendung von Dialogen aus der WiXUIExtension.dll • Erstellen eigener Dialoge
  44. 44. Dialoge: WiXUIExtension.dll WixUI_Mondo WixUI_FeatureTree WixUI_InstallDir WixUI_Minimal Kombinierter Welcome- und License Dialog Welcome License Destination Folder Ready To Install Welcome License Feature Selection Ready To Install Welcome License Setup Type (Typical / Custom / Complete) Feature Selection Ready To Install <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" /> <UIRef Id="WixUI_Mondo" />
  45. 45. Demo Den ersten Installer um eine GUI erweitern.
  46. 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
  47. 47. Demo Anpassen der Dialoge aus der WiXUIExtension Bibliothek.
  48. 48. Dialoge: Eigene Dialoge erstellen <UI> <Dialog Id="MyDialog" Width="260" Height="85" Title="MyDialogTitle"> <Control Id="No" Type="PushButton" X="132" Y="57" Width="56" Height="17" Default="yes" Cancel="yes" Text="No"> <Publish Event="EndDialog" Value="Return">1</Publish> </Control> <Control Id="Yes" Type="PushButton" X="72" Y="57" Width="56" Height="17" Text="yes"> <Publish Event="EndDialog" Value="Exit">1</Publish> </Control> <Control Id="Text" Type="Text" X="48" Y="15" Width="194" Height="30" NoPrefix="yes" Text="Do you really want to cancel?" /> </Dialog> </UI>
  49. 49. Dialoge: Übersicht über verfügbare Controls • Billboard • Bitmap • CheckBox • ComboBox • DirectoryCombo • DirectoryList • Edit • GroupBox • Hyperlink • Icon • Line • ListBox • ListView • MaskedEdit • PathEdit • ProgressBar • PushButton • RadioButtonGroup • ScrollableText • SelectionTree • Text • VolumeCostList • VolumeSelectCombo
  50. 50. Demo Erstellen eines neuen Dialogs.
  51. 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. 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. 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. 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. 55. Wie geht es weiter? Zusätzliche Informationsquellen wie Bücher, Blogs, Links und Twitter Accounts.
  56. 56. Zusätzliche Informationsquellen Windows Installer XML (WiX) Documentation Sehr ausführliche und sehr gute Beschreibung der Funktionalität.
  57. 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
  58. 58. Zusätzliche Informationsquellen Inside Windows Installer 4.5 „Erstellen und Verwalten von Installationspaketen“ von Andreas Kerl (leider nicht mehr verfügbar)
  59. 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
  60. 60. Zusätzliche Informationsquellen WiX Tutorial von Gábor Deák Jahn Umfangreiche Einführung in die WiX Installer http://wix.tramontana.co.hu/
  61. 61. Zusätzliche Informationsquellen Windows Installer Team Blog mit nützlichen Tipps & Tricks rund im Windows Installer und MSI http://blogs.msdn.com/b/windows_installer_t eam/
  62. 62. Zusätzliche Informationsquellen Die offizielle WiX Projektseite mit einer Übersicht über das Projekt und hilfreichen Links. Erklärt auch einzelne WiX Elemente. http://wixtoolset.org/
  63. 63. Zusätzliche Informationsquellen Die offizielle WiX Mailing List Interessante Diskussionen, aber sehr „geschwätzig“. http://wix.sourceforge.net/mailinglists.html
  64. 64. Zusätzliche Informationsquellen @Twitter
  65. 65. Fragen?
  66. 66. Vielen Dank für Ihre Aufmerksamheit
  67. 67. Tipps & Tricks: UI Designer • WiXTrim (Open Source) • http://sourceforge.net/projects/wixtrim/ • #develop (Open Source) • http://icsharpcode.net • WixEdit (Open Source) • http://wixedit.sf.net • WiXAware (kommerziell) • http://www.wixaware.com/ • InStyler (kommerziell) • http://www.instyler.com
  68. 68. Tipps & Tricks: Datei-Handling • Dateien aus Verzeichnis einlesen • Paraffin • http://www.wintellect.com/CS/blogs/jrobbins/archive/tags/Paraffin/default.aspx • https://github.com/Wintellect/Paraffin • Heat • Bestandteil des WiX Toolkits
  69. 69. Download Codebeispiele Demo Codebeispiele können auf github heruntergeladen werden: https://github.com/minibrain/DNC13/

×