Uwe Baumann Developer Group Microsoft GmbH Windows Installer - effektiv einsetzen Professionelle Setup-Features in eigenen Projekten realisieren
MSI effektiv einsetzen 2 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 3 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 4 Setup-Probleme Undefinierter Systemzustand nach Abbruch des Setups, z.B. wegen Fehler Unsaubere Deinstallation User oder anderes Setup löscht oder manipuliert wichtige Files DLL-Hölle
MSI effektiv einsetzen 5 Einige MSI-Antworten Saubere Deinstallation Transaktionale Installation (Alles oder nichts!) Bedarfsgesteuerte Installation von wenig gebrauchten Features oder ganzen Applikationen Selbstreparatur Setup-Routine flexibel anpaßbar
MSI effektiv einsetzen 6 Demo Ein Setup mit IQ!
MSI effektiv einsetzen 7 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 8 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 9 Skriptgesteuerte Installation Das selbsterstellte Setup implementiert den Code zum Kopieren von Dateien und Überprüfen/Verändern des Systems. Um eine Deinstallation zu ermöglichen, müssen alle Teile programmatisch entfernt werden. Ein Setup-Programm kann andere App-Installationen beeinflussen! if(bed) doStep1;... doStepN;
MSI effektiv einsetzen 10 Datenbasiertes Setup wacht über das System protokolliert die Installationen macht Setup zur Transaktion kann mit Admin-Rechten arbeiten Rezept
MSI effektiv einsetzen 11 MSI Architektur MSI Pakete FilesystemRegistry Applikationen Management Tool (z.B. SMS) Active directory Windows Installer API Windows Installer service Konfigurationsdaten Konfigurationsdaten Was ist wie auf dieser Maschine installiert? Was ist wie auf dieser Maschine installiert? Installations-Service im System Installations-Service im System Service unter Windows NT Service unter Windows NT Führt den Setupvorgang durch Führt den Setupvorgang durch API API Installiert und konfiguriert Programme und Features Installiert und konfiguriert Programme und Features Statusabfrage Statusabfrage Pakete erstellen Pakete erstellen Paket Paket Beschreibt den Sollzustand Beschreibt den Sollzustand Konfigurations-daten
MSI effektiv einsetzen 12 Komponenten und Features Component 1 (WordCore) Component 3 (ExcelCore) Component 2 (MS Speller) Product(Office) Feature 2 (Excel) Feature 1 (Word) Entry point (.doc) (Shortcut) (.xls) (Shortcut) (CLSID) Resource (Registry key) Resource(winword.exe) Resource Resource(excel.exe) Resource Resource(Mssp.dll) Feature 3 (Word Speller) Feature 4 (Excel Speller)
MSI effektiv einsetzen 13 Die MSI Datenbank Features Components Shortcuts Action Files CAB (Optional) Summary Information Andere Tabellen... Verweise auf zu installierende Files Spezielles Datenbankformat Vom Entwickler mit Tool (z.B. InstallShield, WISE) erzeugt Enthält relationale Tabellen Ein MSI pro Produkt Produkte haben Features Komponenten Installierbare Resourcen File mit Endung.MSI
MSI effektiv einsetzen 14 Demo Einblick in ein MSI-File Tool Orca 1.2: le.asp?url=/MSDN-FILES/027/001/530/msdncompositedoc.xml
MSI effektiv einsetzen 15 Caching von Metadaten MyOffice.MSI Quellpfad Installations- prozeß MSI (Kopie von MyOffice.MSI) = Informationen über Konfigurations- Möglichkeiten C:\winnt\installer Zielsystem Registry Tatsächliche Konfiguration der Anwendung Anwendung
MSI effektiv einsetzen 16 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 17 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 18 Update by Reinstall 1 Szenario: Eine Anwendung wurde geringfügig verändert (Bugfix) Von der neuen Version wird ein MSI erstellt Problem: Die alte Version existiert noch auf vielen Rechnern
MSI effektiv einsetzen 19 Update by Reinstall 2 Metainformation (Files, Versionen etc) von Version 1 der Applikation sind auf dem Rechner im MSI Cache Metainformationen der Version 2 sind im neuen MSI Vergleich ergibt die zu kopierenden Files Konfiguration der Anwendung bleibt erhalten
MSI effektiv einsetzen 20 Update by Reinstall 3 Implementierung: MSIEXEC /fvomus Version2.msi
MSI effektiv einsetzen 21 Demo Update by Reinstall
MSI effektiv einsetzen 22 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 23 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 24 Erkennen und Reparieren 1 Szenario: Die Applikation soll sich selbst per Menübefehl reparieren können (Erkennen und Reparieren)
MSI effektiv einsetzen 25 Erkennen und Reparieren 2 MSI Aware Applikationen Wissen, daß sie mit MSI installiert wurden Implemetieren das MSI-API, um erweiterte Funktionalitäten anzubieten Dim msiInstaller As WindowsInstaller.Installer Set msiInstaller = CreateObject("WindowsInstaller.Installer") Dim msiInstaller As WindowsInstaller.Installer Set msiInstaller = CreateObject("WindowsInstaller.Installer")
MSI effektiv einsetzen 26 Erkennen und Reparieren 3 Implementierung: msiInstaller.ReinstallProduct MYTEXT_PRODUCTCODE_GUID, _ msiReinstallModeFileOlderVersion Or msiReinstallModeShortcut msiInstaller.ReinstallProduct MYTEXT_PRODUCTCODE_GUID, _ msiReinstallModeFileOlderVersion Or msiReinstallModeShortcut
MSI effektiv einsetzen 27 Features nachinstallieren 1 Szenario: Ein wenig gebrauchtes Feature (z.B. fremdsprachliche Rechtschreibprüfung) soll aus der Applikation on demand nachinstalliert werden
MSI effektiv einsetzen 28 Features nachinstallieren 2 Implementierung: msiInstallState = msiInstaller.FeatureState( _ MYTEXT_PRODUCTCODE_GUID, _ "MyTextSpeller") If msiInstallState <> msiInstallStateLocal Then If MsgBox("The Spellchecker is currently not installed. " & Chr$(13) & "Would you like to install it?", _ vbQuestion + vbYesNo, "Install Feature") = vbYes Then Call msiInstaller.ConfigureFeature( _ MYTEXT_PRODUCTCODE_GUID, _ "MyTextSpeller", _ msiInstallStateLocal) End If msiInstallState = msiInstaller.FeatureState( _ MYTEXT_PRODUCTCODE_GUID, _ "MyTextSpeller") If msiInstallState <> msiInstallStateLocal Then If MsgBox("The Spellchecker is currently not installed. " & Chr$(13) & "Would you like to install it?", _ vbQuestion + vbYesNo, "Install Feature") = vbYes Then Call msiInstaller.ConfigureFeature( _ MYTEXT_PRODUCTCODE_GUID, _ "MyTextSpeller", _ msiInstallStateLocal) End If
MSI effektiv einsetzen 29 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 30 Agenda Einleitung MSI Grundlagen MSI effektiv einsetzen: Das MSI-Framework nutzen… Anwendungsupdates ohne Aufwand MSI aware Applikationen schreiben… Features on demand nachinstallieren Erkennen und Reparieren Installer durch Skripte erweitern… Seriennnummer überprüfen
MSI effektiv einsetzen 31 Custom Actions 1 MSI ist durch Skripte oder DLLs erweiterbar Möglich sind VBScript, JScript, konventionelle DLLs Austausch von Daten mit der aufrufenden Setup-Instanz über spezielle Objekte (Session, Database)
MSI effektiv einsetzen 32 Custom Actions 2 Implementierung: Sub CheckPID() 'Get the Product ID sProductID = Session.Property("PIDKEY") 'Check if PID is OK if Left(sProductID, 3) = "123" then MsgBox "PID has been validated. Thank you for using MyOffice.", vbOK + vbInformation, "PID validated" Session.Property("PIDIsOK") = "1" else MsgBox "Sorry, the PID you entered is invalid. Please try again.", _ vbOK + vbCritical, "Incorrect PID" Session.Property("PIDIsOK") = "0" end if End Sub Sub CheckPID() 'Get the Product ID sProductID = Session.Property("PIDKEY") 'Check if PID is OK if Left(sProductID, 3) = "123" then MsgBox "PID has been validated. Thank you for using MyOffice.", vbOK + vbInformation, "PID validated" Session.Property("PIDIsOK") = "1" else MsgBox "Sorry, the PID you entered is invalid. Please try again.", _ vbOK + vbCritical, "Incorrect PID" Session.Property("PIDIsOK") = "0" end if End Sub
MSI effektiv einsetzen 33 Demo Eine Custom Action mit InstallShield implementieren
MSI effektiv einsetzen 34 Links und Ressourcen 1 Windows Installer SDK 1.2 Download files/027/001/457/msdncompositedoc.xml files/027/001/457/msdncompositedoc.xml Windows Installer SDK 1.5 (= 2.0) Beta Download FILES/027/001/530/msdncompositedoc.xml FILES/027/001/530/msdncompositedoc.xml
MSI effektiv einsetzen 35 Links und Ressourcen 2 D42473 Überblick über die Windows Installer- Technologie pport/kb/D42/D42473.HTM pport/kb/D42/D42473.HTM Visual Studio Installer Guided Tour s/vsi11/tour.asp s/vsi11/tour.asp
MSI effektiv einsetzen 36 Links und Ressourcen 3 Am Anfang war die Installation Christoph Haltiner, BasicPro 5/2000 "VB/VBA Developer's Guide to the Windows Installer" by Mike Gunderloy; Sybex (ISBN: )
MSI effektiv einsetzen 37 Fragen!? Uff...