370 likes | 392 Views
Learn professional setup features and efficient deployment methods using Windows Installer. Enhance your projects with MSI framework capabilities, application updates, script extensions, and more. Overcome common setup issues and leverage the power of MSI for effective installations.
E N D
Windows Installer - effektiv einsetzen Professionelle Setup-Features in eigenen Projekten realisieren Uwe Baumann Developer Group Microsoft GmbH Email: uwebaum@microsoft.com
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
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
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
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
Demo Ein Setup mit IQ! MSI effektiv einsetzen
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
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
if(bed) doStep1; ... doStepN; 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! MSI effektiv einsetzen
Rezept Rezept Datenbasiertes Setup • wacht über das System • protokolliert die Installationen • macht Setup zur Transaktion • kann mit Admin-Rechten arbeiten MSI effektiv einsetzen
Windows Installer service Konfigurations- daten Filesystem Registry MSI Architektur Active directory • Paket • Beschreibt den Sollzustand • API • Installiert und konfiguriert Programme und Features • Statusabfrage • Pakete erstellen MSI Pakete Management Tool (z.B. SMS) Applikationen Windows Installer API • Installations-Service im System • Service unter Windows NT • Führt den Setupvorgang durch • Konfigurationsdaten • Was ist wie auf dieser Maschine installiert? MSI effektiv einsetzen
Feature 1 (Word) Feature 2 (Excel) Feature 3 (Word Speller) Feature 4 (Excel Speller) Component 1 (WordCore) Component 2 (MS Speller) Component 3 (ExcelCore) Resource (winword.exe) Entry point (Shortcut) Resource (Mssp.dll) Entry point (CLSID) Resource (excel.exe) Entry point (Shortcut) Resource (Registry key) Resource (Registry key) Entry point (.doc) Resource (Registry key) Entry point (.xls) Komponenten und Features Product (Office) MSI effektiv einsetzen
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 Die MSI Datenbank CAB (Optional) Features Components Shortcuts Verweise auf zu installierende Files Action Summary Information Files Andere Tabellen... MSI effektiv einsetzen
Demo Einblick in ein MSI-File Tool Orca 1.2: http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/027/001/530/msdncompositedoc.xml MSI effektiv einsetzen
C:\winnt\installer 123456.MSI (Kopie von MyOffice.MSI) = Informationen über Konfigurations-Möglichkeiten Quellpfad Installations-prozeß MyOffice.MSI Registry Tatsächliche Konfiguration der Anwendung Anwendung Caching von Metadaten Zielsystem MSI effektiv einsetzen
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
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
„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
„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
„Update by Reinstall“ 3 Implementierung: MSIEXEC /fvomus Version2.msi MSI effektiv einsetzen
Demo „Update by Reinstall“ MSI effektiv einsetzen
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
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
Erkennen und Reparieren 1 Szenario: • Die Applikation soll sich selbst per Menübefehl reparieren können („Erkennen und Reparieren“) MSI effektiv einsetzen
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
Erkennen und Reparieren 3 Implementierung: msiInstaller.ReinstallProduct MYTEXT_PRODUCTCODE_GUID, _ msiReinstallModeFileOlderVersion Or msiReinstallModeShortcut MSI effektiv einsetzen
Featuresnachinstallieren 1 Szenario: • Ein wenig gebrauchtes Feature (z.B. fremdsprachliche Rechtschreibprüfung) soll aus der Applikation „on demand“ nachinstalliert werden MSI effektiv einsetzen
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
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
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
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
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
Demo Eine Custom Actionmit InstallShield implementieren MSI effektiv einsetzen
Links und Ressourcen 1 • Windows Installer SDK 1.2 Downloadhttp://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
Links und Ressourcen 2 • D42473 Überblick über die Windows Installer-Technologie http://www.microsoft.com/IntlKB/Germany/Support/kb/D42/D42473.HTM • Visual Studio Installer Guided Tourhttp://msdn.microsoft.com/vstudio/downloads/vsi11/tour.asp MSI effektiv einsetzen
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
Uff... Fragen!? MSI effektiv einsetzen