Windows Installer - effektiv einsetzen Professionelle Setup-Features in eigenen Projekten realisieren Uwe Baumann Developer Group Microsoft GmbH Email: [email protected].

Download Report

Transcript 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