Windows Installer - effektiv einsetzen Professionelle Setup-Features in eigenen Projekten realisieren Uwe Baumann Developer Group Microsoft GmbH Email: [email protected].
Download ReportTranscript Windows Installer - effektiv einsetzen Professionelle Setup-Features in eigenen Projekten realisieren Uwe Baumann Developer Group Microsoft GmbH Email: [email protected].
Windows Installer - effektiv einsetzen
Professionelle Setup-Features in eigenen Projekten realisieren Uwe Baumann Developer Group Microsoft GmbH Email: [email protected]
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 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
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 4
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 5
Demo Ein Setup mit IQ!
MSI effektiv einsetzen 6
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 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
Skriptgesteuerte Installation
Das selbsterstellte Setup implementiert den Code zum Kopieren von Dateien und Überprüfen/Verändern des Systems.
if(bed) doStep1; ...
doStepN; Um eine Deinstallation zu ermöglichen, müssen alle Teile programmatisch entfernt werden.
Ein Setup-Programm kann andere App-Installationen beeinflussen!
MSI effektiv einsetzen 9
Datenbasiertes Setup
Rezept Rezept wacht über das System protokolliert die Installationen macht Setup zur Transaktion kann mit Admin-Rechten arbeiten MSI effektiv einsetzen 10
MSI Architektur
Paket
Beschreibt den Sollzustand
API
Installiert und konfiguriert Programme und Features Statusabfrage Pakete erstellen
Installations-Service im System
Service unter Windows NT Führt den Setupvorgang durch Active directory MSI Pakete Applikationen Management Tool (z.B. SMS) Windows Installer API Windows Installer service
Konfigurationsdaten
Was ist wie auf dieser Maschine installiert?
Filesystem Registry Konfigurations daten
11 MSI effektiv einsetzen
Komponenten und Features Product (Office) Feature 1 (Word) Feature 2 (Excel) Component 1 (WordCore) Resource (winword.exe) Entry point (Shortcut) Resource (Registry key) Entry point (.doc) Feature 3 (Word Speller) Feature 4 (Excel Speller) Component 2 (MS Speller) Resource (Mssp.dll) Entry point (CLSID) Resource (Registry key) Component 3 (ExcelCore) Resource (excel.exe) Entry point (Shortcut) Resource (Registry key) Entry point (.xls)
MSI effektiv einsetzen 12
Die MSI Datenbank
• • •
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 Summary Features Components Information Shortcuts Action Files Andere Tabellen...
CAB (Optional) Verweise auf zu installierende Files
13 MSI effektiv einsetzen
Demo Einblick in ein MSI-File Tool Orca 1.2: http://msdn.microsoft.com/downloads/default.asp?URL=/code/samp le.asp?url=/MSDN-FILES/027/001/530/msdncompositedoc.xml
MSI effektiv einsetzen 14
Caching von Metadaten Quellpfad MyOffice.MSI
MSI effektiv einsetzen
Installations prozeß Zielsystem Anwendung C:\winnt\installer 123456.MSI
(Kopie von MyOffice.MSI) = Informationen über Konfigurations-
Möglichkeiten
Registry Tatsächliche Konfiguration der Anwendung
15
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 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
„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 18
„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 19
„Update by Reinstall“ 3 Implementierung: MSIEXEC /fvomus Version2.msi
MSI effektiv einsetzen 20
Demo „Update by Reinstall“
MSI effektiv einsetzen 21
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 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
Erkennen und Reparieren 1 Szenario:
Die Applikation soll sich selbst per Menübefehl reparieren können („Erkennen und Reparieren“)
MSI effektiv einsetzen 24
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")
MSI effektiv einsetzen 25
Erkennen und Reparieren 3 Implementierung: msiInstaller.ReinstallProduct MYTEXT_PRODUCTCODE_GUID, _ msiReinstallModeFileOlderVersion Or msiReinstallModeShortcut
MSI effektiv einsetzen 26
Features nachinstallieren 1 Szenario:
Ein wenig gebrauchtes Feature (z.B. fremdsprachliche Rechtschreibprüfung) soll aus der Applikation „on demand“ nachinstalliert werden
MSI effektiv einsetzen 27
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 End If
MSI effektiv einsetzen 28
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 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
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 31
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
MSI effektiv einsetzen 32
Demo Eine Custom Action mit InstallShield implementieren
MSI effektiv einsetzen 33
Links und Ressourcen 1
Windows Installer SDK 1.2 Download http://msdn.microsoft.com/downloads/default .asp?URL=/code/sample.asp?url=/msdn files/027/001/457/msdncompositedoc.xml
Windows Installer SDK 1.5 (= 2.0) Beta Download http://msdn.microsoft.com/downloads/default .asp?URL=/code/sample.asp?url=/MSDN FILES/027/001/530/msdncompositedoc.xml
MSI effektiv einsetzen 34
Links und Ressourcen 2
D42473 Überblick über die Windows Installer Technologie http://www.microsoft.com/IntlKB/Germany/Su pport/kb/D42/D42473.HTM
Visual Studio Installer Guided Tour http://msdn.microsoft.com/vstudio/download s/vsi11/tour.asp
MSI effektiv einsetzen 35
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: 0782127452)
MSI effektiv einsetzen 36
Fragen!?
MSI effektiv einsetzen
Uff...
37