Freigeben über


Windows Installer für Spieleentwickler

Zeigt, wie Windows Installer zum Installieren von Spielen auf Endbenutzercomputern verwendet werden kann. Windows Installer bietet vollständige Unterstützung für eine angepasste Benutzeroberfläche sowie für Patching.

Microsoft Windows Installer ist die bevorzugte API zum Installieren von Software auf Windows-basierten Computern. Während viele der Features von Windows Installer für die Unterstützung der Bereitstellung von Geschäftsanwendungen in einer Unternehmensumgebung konzipiert sind, eignet sich Windows Installer auch vollständig für die Installation von Spielen auf Endbenutzercomputern. Die wichtigsten Vorteile der Verwendung von Windows Installer für die Spieleinstallation sind:

  • Zuverlässige Deinstallation
  • Möglichkeit zum Installieren von Inhalten bei Bedarf
  • Unterstützung für vollständig benutzerdefinierte Benutzeroberfläche
  • Effizientes Patchen

Dieser Artikel bietet eine Übersicht über Windows Installer, die speziell auf Spieleentwickler ausgerichtet ist. Ausführliche Dokumentation zu den in diesem Artikel erwähnten Features und APIs finden Sie im Windows Platform SDK.

Überblick

Alle Windows Installer-basierten Setups verwenden eine Installationsdatenbankdatei, die als MSI-Datei bezeichnet wird, um zu beschreiben, wie die Anwendung installiert werden soll. Die MSI-Datei enthält Informationen dazu, welche Dateien, Registrierungsschlüssel, Desktopverknüpfungen, Dateizuordnungen und andere Anwendungselemente installiert werden sollen. Die tatsächlich zu installierenden Dateien können in der MSI-Datei selbst komprimiert, gebündelt und in separate "CAB-Dateien" komprimiert oder an anderer Stelle auf den Installationsmedien als einzelne nicht komprimierte Dateien gespeichert werden. Die MSI-Datei kann auch auf extern implementierte benutzerdefinierte Aktionen verweisen, um Aktionen zuzulassen, für die die MSI-Datei nicht nativ zulässig ist.

Eine MSI-Datei kann optional eine Benutzeroberfläche enthalten, die den Benutzer durch den Installationsprozess führt. Diese Benutzeroberfläche ist für die meisten Anwendungen ausreichend. Es hat jedoch das Aussehen und Verhalten einer normalen Windows-Anwendung, und viele Spieleentwickler bevorzugen es, ihre Setupanwendung das Aussehen und Verhalten des Spiels selbst beizubehalten, um eine konsistentere Endbenutzerumgebung zu bieten. Zur Unterstützung dieses vollständig benutzerdefinierten Benutzeroberflächenszenarios kann eine Setupanwendung die integrierte Benutzeroberfläche von Windows Installer deaktivieren und die gesamte Benutzeroberfläche selbst behandeln. Die Windows Installer-API macht einen Rückrufmechanismus verfügbar, um eine benutzerdefinierte Setup-UI über den Fortschritt der Installation sowie wichtige Ereignisse wie Datenträgeränderungsanforderungen zu benachrichtigen.

Windows Installer ist keine End-to-End-Lösung zum Erstellen von Setups. Es handelt sich nur um eine API, die von einem Setupprogramm verwendet werden kann, um die eigentliche Installation von Dateien, Registrierungsschlüsseln, Desktopverknüpfungen und anderen Elementen der Anwendung auszuführen. Aktuelle Versionen aller wichtigen kommerziellen Setuptools (z. B. InstallShield, WISE und Microsoft Visual Studio) unterstützen Windows Installer. Diese Tools bieten praktische Benutzeroberflächen zum Erstellen des Setups für ein Spiel, aber sie verlassen sich auf die Windows Installer-API, um einen Großteil der tatsächlichen Installation zu erledigen. Diese Tools können auch nur verwendet werden, um eine MSI-Datenbank zu erstellen, die das Setuppaket enthält, das dann über eine benutzerdefinierte Setup-UI installiert werden kann. Als Alternative zu Drittanbietertools bietet die Windows Installer-API alle Funktionen, die zum programmgesteuerten Erstellen und Bearbeiten einer MSI-Datenbank erforderlich sind, und das Windows Platform SDK enthält ein Bare-Bones MSI-Datenbankbearbeitungstool namens Orca.

Wichtige Windows Installer-Konzepte

Hier sind die Komponenten und Features von Windows Installer.

Komponenten

Eine Anwendung besteht aus einer oder mehreren Komponenten, die durch eine GUID-Komponenten-ID identifiziert werden. Eine Komponente ist eine Atomeinheit; es ist entweder vollständig installiert oder überhaupt nicht installiert. Eine Komponente kann aus einer einzelnen Datei, mehreren Dateien, Registrierungsschlüsseln, Desktopverknüpfungen oder einer Kombination davon bestehen. Die Ressourcen (Dateien usw.) innerhalb einer Komponente müssen für diese Komponente eindeutig sein, sodass keine zwei Komponenten dieselbe Ressource enthalten können. Eine Komponente wird nie explizit installiert; sie wird nur als Teil eines Features installiert (siehe Folgendes).

Funktionen

Ein Feature ist eine Gruppe von Komponenten, die durch eine GUID-Feature-ID identifiziert werden. Im Gegensatz zu Komponenten können mehrere Features dieselbe Komponente enthalten. Eine Komponente, die zwischen mehreren Features gemeinsam genutzt wird, wird installiert, wenn eines dieser Features installiert ist, und nur entfernt, wenn alle Features, die auf die Komponente verweisen, deinstalliert wurden. Die Installation eines Features kann automatisch als Teil der Installation eines Produkts erfolgen, oder es kann manuell mithilfe der MsiConfigureFeature-API durchgeführt werden.

Obwohl einige Spiele über mehrere "Features" verfügen, die unabhängig voneinander installiert werden können, ist das Windows Installer-Konzept eines Features weiterhin nützlich. Da ein Windows Installer-Feature nicht mehr als eine Sammlung von Komponenten ist, die zusammen installiert werden können, können Spiele Features verwenden, um alle inhalte zu gruppieren, die für eine bestimmte Phase des Spiels erforderlich sind. Beispielsweise könnte ein levelorientiertes Spiel ein Feature pro Level definieren, das aus allen inhalten besteht, die für dieses Level erforderlich sind. Dies würde es dem Spiel ermöglichen, den Inhalt nacheinander innerhalb des Spiels selbst zu installieren, anstatt alle Inhalte für alle Level während der Erstinstallation zu installieren.

Installationsstatus

Jede Komponente oder jedes Feature verfügt über einen zugeordneten Installationsstatus, der bestimmt, ob die Komponente oder das Feature verfügbar ist, und falls ja, wo die Dateien für die Komponente oder das Feature installiert sind. Die möglichen Installationszustände für ein Feature sind:

nicht vorhanden

Das Feature ist nicht installiert und kann daher nicht verwendet werden.

Lokal

Das Feature ist verfügbar und kann auf der lokalen Festplatte ausgeführt werden.

Quelle

Das Feature ist verfügbar und wird installiert, um von den ursprünglichen Quellmedien (in der Regel eine CD oder DVD) auszuführen.

angekündigt

Das Feature ist nicht installiert, kann aber bei Bedarf mithilfe der MsiConfigureFeature-API installiert werden. Wenn das Feature tatsächlich installiert ist, kann es entweder im Zustand "Lokal" oder "Quelle" installiert werden.

Eine Komponente kann einen der oben genannten Zustände mit Ausnahme von "Angekündigt" aufweisen. Wenn eine Komponente Teil eines angekündigten Features ist, wird die Komponente bis zur Installation des Features als "Abwesend" angezeigt.

Bei Bedarf installieren

Windows Installer ermöglicht es einer Anwendung, Features als angekündigt zu kennzeichnen, was bedeutet, dass das Feature noch nicht installiert ist, aber zur Laufzeit zur Installation verfügbar ist, falls erforderlich. Die Installation von Features zur Laufzeit wird als "Bei Bedarf installieren" bezeichnet. Spiele können install on Demand verwenden, um die für die anfängliche Einrichtung des Spiels erforderliche Zeit drastisch zu reduzieren, indem sie die Installation von Spielinhalten zurückstellen, bis sie zur Laufzeit benötigt wird. Die zum Installieren des Inhalts zur Laufzeit erforderliche Verzögerung kann oft teilweise oder vollständig ausgeblendet werden, indem die On-Demand-Installation in einem Hintergrundthread ausgeführt wird, während der Benutzer andernfalls mit dem Spiel belegt ist.

Benutzerdefinierte Benutzeroberfläche

Obwohl Windows Installer eine Standard-Benutzeroberfläche bereitstellt, die den Benutzer durch die Installation der Anwendung führt, sieht diese Schnittstelle wie die einer Windows-Standardanwendung aus. Viele Spieleentwickler bevorzugen, dass ihre Installations-UI das gleiche Erscheinungsbild wie das Spiel selbst hat, um dem Benutzer einen Geschmack des Ambientes des Spiels zu bieten. Um dies zu unterstützen, lässt Windows Installer die integrierte Benutzeroberfläche vollständig deaktiviert, sodass der Entwickler eine vollständig benutzerdefinierte Benutzeroberfläche bereitstellen kann.

Das benutzerdefinierte Setupprogramm deaktiviert zunächst die integrierte Benutzeroberfläche von Windows Installer mithilfe der MsiSetInternalUI--API, um die UI-Ebene auf INSTALLUILEVEL_NONE festzulegen. Anschließend wird die MsiSetExternalUI--API aufgerufen, um eine Rückruffunktion anzugeben, die während des Installationsvorgangs aufgerufen wird, um das Setupprogramm über wichtige Ereignisse während der Installation zu benachrichtigen.

Der eigentliche Installationsprozess wird dann gestartet, indem die MsiInstallProduct-API aufgerufen wird. Diese API akzeptiert eine Parameterzeichenfolge, mit der der Aufrufer Werte für benannte Eigenschaften angeben kann. Diese Eigenschaften können in der Installationsdatenbank selbst verwendet werden, um anzupassen, wie die Anwendung installiert werden soll. Diese Eigenschaften können verwendet werden, um Folgendes anzugeben:

  • Das Verzeichnis, in dem die Anwendung installiert werden soll
  • Welche Features lokal installiert werden sollen und welche auf der CD/DVD ausgeführt werden sollen (z. B. um die Auswahl zwischen einer minimalen Installation und einer vollständigen Installation zu ermöglichen)
  • Gibt an, ob die Anwendung für alle Benutzer des Computers oder nur für den aktuellen Benutzer installiert werden soll.

Während der Installation verwendet das Setupprogramm die Benachrichtigungen, die an seine Rückruffunktion gesendet werden, um zu bestimmen, wann die Statusanzeige-UI aktualisiert werden soll, wann der Benutzer aufgefordert wird, die nächste CD einzufügen, oder wann der Benutzer über einen Fehler im Installationsprozess benachrichtigt werden soll.

Flickerei

Mit Windows Installer können installierte Anwendungen durch Anwenden einer Patchdatei gepatcht werden. Eine Patchdatei enthält die neuen Dateien, die vom Patch hinzugefügt werden sollen, die Dateien, die vom Patch geändert werden, und eine Liste der Änderungen, die an der Installationsdatenbank vorgenommen werden sollen. Um Platz zu sparen, enthält die Patchdatei tatsächlich nur die Unterschiede zwischen der ursprünglichen Version der Datei und der neuen Version der Datei, anstatt den vollständigen Inhalt einer Datei zu speichern, die vom Patch geändert wurde.

Um einen Patch zu erstellen, benötigen Sie das Setupimage für jede der Versionen der Anwendung, von denen der Patch aktualisiert werden soll, sowie das Setupimage für die neue, aktualisierte Version der Anwendung. Ein Setupimage besteht aus der MSI-Datenbank und allen tatsächlichen Datendateien für die Anwendung. Die beste Möglichkeit zum Erstellen eines Setupimages für eine neue Version der Anwendung besteht darin, das Setupimage aus der vorherigen Version der Anwendung zu kopieren und dann alle erforderlichen Änderungen vorzunehmen, um diese Kopie auf die gepatchte Version zu aktualisieren.

Sobald Sie über alle erforderlichen Setupimages verfügen, können Sie die Patches mithilfe von Msimsp.exeerstellen. Dabei handelt es sich um ein Patcherstellungstool, das als Teil des Platform SDK verfügbar ist. Das Tool fragt nach den Speicherorten der einzelnen Setupimages und bestimmt dann, wie die Unterschiede zwischen den aufeinander folgenden Versionen effizient dargestellt werden. Die Ausgabe des Tools ist die endgültige Patchdatei (identifiziert durch den Erweiterungs-MSP). Rufen Sie zum programmgesteuerten Installieren des Patches die MsiApplyPatch-API auf. Der Benutzer kann den Patch auch manuell installieren, indem er im Explorer auf die MSP-Datei doppelklicken.

Weitere Ressourcen