DirectX-Installation für Spieleentwickler
In diesem Artikel werden einige der häufig gestellten Fragen zur DirectX-Runtime und zur Verwendung von DirectSetup zum Installieren von DirectX behandelt.
- DirectX-Runtime
- DirectX-Versionsnummer
- DirectX-Bibliotheken
- Installation von DirectX durch das Installationsprogramm des Spiels
- Kleine Installationspakete
- Interne Bereitstellung der Debug-DirectX-Runtime
Wichtig
Das Legacy-DirectX SDK ist am Ende der Lebensdauer, aber es ist weiterhin verfügbar, um alte Spiele, Tutorials und Projekte zu unterstützen. Neue Projekte sollten es nicht verwenden. Die Verwendung des Legacy-DirectX SDK erfordert die Verwendung des veralteten DirectSetup für Komponenten wie D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 und XACT. Weitere Informationen zum aktuellen Status des DirectX SDK finden Sie unter Wo befindet sich das DirectX SDK?, und im Blogbeitrag Not So Direct Setup.
DirectX-Runtime
Die DirectX-Runtime besteht aus Kernkomponenten und optionalen Komponenten.
Die Kernkomponenten wie Direct3D und DirectInput werden als Teil des Betriebssystems betrachtet. Die Kernkomponenten für DirectX 9.0c haben sich seit dem DirectX SDK Sommer 2004-Update nicht geändert und entsprechen den mit Microsoft Windows XP SP2, Windows XP Pro x64 Edition und Windows Server 2003 SP1 veröffentlichten Komponenten. Windows Vista enthält DirectX 10, das das Windows Display Driver Model (WDDM) und Direct3D 10.x unterstützt. Windows 7 und Windows Vista unterstützen DirectX 11, das Direct3D 11, Direct2D, DirectWrite, das WARP10-Softwarerenderinggerät und die Featureebenen 10level9 unterstützt. Weitere Informationen finden Sie unter Grafik-APIs in Windows .
Die optionalen Komponenten werden in Updates des DirectX SDK veröffentlicht, und sie umfassen D3DX, XACT, XAudio2, XINPUT, Managed DirectX und andere solche Komponenten. Viele der optionalen Komponenten werden regelmäßig aktualisiert, um Kundenfeedback zu integrieren und neue Features verfügbar zu machen.
DirectX-Versionsnummer
Die DirectX-Versionsnummer, z. B. 9.0c, bezieht sich nur auf die Version der Kernkomponenten, z. B. Direct3D, DirectInput oder DirectSound. Diese Nummer deckt nicht die Versionen der verschiedenen optionalen Komponenten ab, die im DirectX SDK veröffentlicht werden, z. B. D3DX, XACT, XINPUT usw.
Im Allgemeinen ist die DirectX-Versionsnummer nur als Kurzreferenz zu den Kernlaufzeitbits sinnvoll. Diese Nummer sollte nicht verwendet werden, um zu überprüfen, ob die richtige DirectX-Runtime bereits installiert ist, da die optionalen DirectX-Komponenten nicht berücksichtigt werden.
DirectX-Bibliotheken
In der Vergangenheit wurden die optionalen Komponenten des DirectX SDK, einschließlich D3DX, als statische Bibliotheken veröffentlicht. Diese werden jedoch jetzt als dynamic-like libraries (DLL) veröffentlicht, da die Nachfrage nach besseren Sicherheitsmethoden gestiegen ist. DLLs ermöglichen die Wartung des zuvor veröffentlichten Codes. Wenn diese Komponenten als statische Bibliotheken bereitgestellt würden, gäbe es für Microsoft keine Möglichkeit, Sicherheitsprobleme zu beheben, die nach der Veröffentlichung gefunden wurden.
Wenn Features zu den optionalen Komponenten hinzugefügt oder geändert werden, werden auch die Namen der entsprechenden DLLs geändert, um sicherzustellen, dass keine Regressionen in vorhandenen Spielen verursacht werden, die veröffentlichte Komponenten verwenden. Die DLLs für jede Komponente werden nebeneinander ausgeführt, und Spieleentwickler können genau auswählen, welche DLL-Version das Spiel verwendet, indem sie eine Verknüpfung mit der entsprechenden Importbibliothek herstellen.
Obwohl sichergestellt wird, dass DLLs auf einem System nicht so einfach installiert sind wie das einfache Verknüpfen mit statischen Bibliotheken, wurden einige Änderungen am DirectX SDK vorgenommen, um die Probleme des DLL-Modells zu beheben:
- Die DirectX-Verteilerversion kann so konfiguriert werden, dass sie nur die Komponenten enthält, die Ihre Anwendung benötigt, um die Verteilung und die Mediengrößen zu minimieren.
- Der verteilbare Ordner Programme\DirectX SDK\Redist\ enthält jetzt eine Cabinet-Datei (.cab) für jede mögliche optionale Komponente, sodass Sie kein älteres SDK suchen müssen, um sie zu finden.
- Wenn Sie das SDK selbst installieren, werden alle möglichen optionalen Komponenten installiert.
- Ein DirectX-Verteiler, der alle optionalen Komponenten enthält, ist sowohl als webbasiertes Installationsprogramm als auch als herunterladbares Paket verfügbar. Weitere Informationen finden Sie im DirectX Developer Center (DirectX).
Installation von DirectX durch das Installationsprogramm des Spiels
Hinweis
Weitere Informationen finden Sie unter Direct3D 11-Bereitstellung für Spieleentwickler.
Im Folgenden finden Sie die bewährten Methoden zum Hinzufügen der Installation von DirectX zum Installationsprogramm eines Spiels:
Begriff | BESCHREIBUNG |
---|---|
Installieren Sie die verteilbaren Komponenten jedes Mal. |
Der Installationsprozess eines Spiels sollte die verteilbaren DirectX-Komponenten während jeder einzelnen Installation installieren, ohne dass Benutzer dies ablehnen können. Wenn Sie die Abmeldung zulassen, werden einige Benutzer erraten, dass sie es nicht benötigen, und wenn sie es tatsächlich tun, wird das Spiel nicht ausgeführt. |
Lassen Sie das DirectX-Installationsprogramm nach optionalen Komponenten suchen. |
Gehen Sie nicht davon aus, dass die neuesten optionalen Komponenten bereits auf einem System installiert sind, da Windows Update und Service Packs keine optionalen DirectX-Komponenten bereitstellen. Sie müssen die DirectX-Runtime entweder installieren, indem Sie dxsetup.exe direkt ausführen oder DirectSetup aufrufen. |
Im Hintergrund einrichten. |
Starten Sie das Setup im unbeaufsichtigten Modus, damit Benutzer das Aktualisieren der DirectX-Runtime nicht versehentlich überspringen. Hierzu können Sie dxsetup.exe mit dem folgenden Befehl starten: oder indem Sie DirectSetup aufrufen und keine Benutzeroberfläche anzeigen. |
Kombinieren Sie EULA-Zustimmungen. |
Wenn Sie den Benutzer auffordern, eine EULA zu akzeptieren, kombinieren Sie diese mit der Aufforderung zur Annahme der DirectX-EULA bei der Installation im unbeaufsichtigten Modus, sodass die Aufforderung zur Annahme von EULAs nur einmal erfolgt. Es sollte eine Aufforderung erfolgen, bevor Sie etwas installieren, damit der Benutzer nicht zu einer fehlerhaften und teilweisen Installation führt, wenn der Benutzer dies nicht akzeptiert. |
Führen Sie einfach dxsetup aus, oder rufen Sie DirectSetup auf. |
Da sich die DirectX-Versionsnummer auf nichts mit Ausnahme der DirectX-Kernkomponenten bezieht, überprüfen Sie keine installierte Version, bevor Sie dxsetup.exe ausführen oder DirectSetup aufrufen. Überprüfen Sie auch nicht, ob eine Datei vorhanden ist, um zu testen, ob eine optionale Komponente bereits installiert ist, da dadurch in der Regel nicht richtig bestimmt wird, wann eine Komponente vorhanden ist, aber aktualisiert werden muss. Das DirectX-Setuppaket ermittelt dies jedoch schnell und führt die richtige Aktion aus. |
Kleine Installationspakete
Sie können kleinere Installationspakete für DirectX erstellen, indem Sie den Inhalt des verteilbaren DirectX-Ordners auf den minimalen Satz von Dateien reduzieren, die erforderlich sind, damit das Installationsprogramm funktioniert, und alle zusätzlichen Komponenten beibehalten, die Ihr Spiel verwendet.
Abhängig von Ihren Mindestspezifikationen müssen Sie möglicherweise nicht einmal die Haupt-DirectX 9.0c-Cabinetdateien in den verteilbaren Ordner Ihres Installationsmediums aufnehmen. Eine große Mehrheit der Windows XP-Installationen verfügt über Service Pack 2, das die DirectX 9.0c-Kernkomponenten enthält, sodass der DirectX-Setupvorgang sehr schnell ist und keinen Neustart erfordert. Das kleinste Paket, das erstellt werden kann, beträgt etwa 3 MB und kann auf etwa die Hälfte dieser Größe komprimiert werden. Ein Paket wie dieses enthält eine Version der D3DX-DLL und erfordert, dass DirectX 9.0c bereits vorhanden ist.
Der minimale Satz von Dateien, die zum Erstellen eines verteilbaren Pakets erforderlich sind, sind die folgenden Dateien, die sich im Ordner DirectX SDK Redist (Programme\DirectX SDK\Redist) befinden:
- dxsetup.exe
- dsetup32.dll
- dsetup.dll
- dxupdate.cab
Fügen Sie diesen die Cabinet-Dateien für die Komponenten hinzu, die Sie installieren möchten. Wenn Sie verlangen, dass die Benutzer Ihrer Anwendung bereits über DirectX 9.0c verfügen, müssen Sie keine DirectX.cab oder dxnt.cab einschließen, die den größten Teil des Speicherplatzbedarfs darstellen. DirectX.cab wird nur für Windows 98 und Windows ME benötigt. dxnt.cab wird nur für Windows 2000, Windows XP und Windows XP SP1 benötigt. und dxdllreg_x86.cab ist nur für Windows 2000, Windows XP RTM, Windows XP SP1 und Windows Server 2003 RTM erforderlich. Wenn Sie DirectShow nicht verwenden oder davon ausgehen, dass es bereits installiert ist, können Sie BDA.cab, BDANT.cab und BDAXP.cab weglassen.
Hinweis
Sie können davon ausgehen, dass Benutzer Ihrer Anwendung bereits Über DirectX 9.0c verfügen, wenn es von einer früheren Version Ihrer Anwendung installiert wurde, Sie Benutzer zwingen, manuell über den Web installer zu aktualisieren, oder Sie gehen davon aus, dass sie Über Windows XP SP2 oder höher verfügen.
Wenn Sie in diesem Beispiel nur die 32-Bit-Version von D3DX für April 2006 verwenden, können Sie Apr2006_d3dx9_30_x86.cab hinzufügen. Wenn Sie die 32-Bit-Version von XINPUT vom August 2006 verwenden, fügen Sie Aug2006_xinput_x86.cab hinzu.
Wenn Sie über eine native 64-Bit-Anwendung verfügen, müssen Sie die _x64-Versionen hinzufügen. Wenn Sie jedoch über eine 32-Bit-Anwendung auf einem 64-Bit-Betriebssystem verfügen, funktionieren die 32-Bit-Versionen der DLLs.
Anschließend können Sie dieses Paket von Dateien verteilen und DirectSetup im unbeaufsichtigten Modus starten oder dxsetup.exe in der Befehlsshell im unbeaufsichtigten Modus ausführen. Denken Sie daran, dieses Paket nicht durch eine Versionsüberprüfung von Dateien zu schützen, und stellen Sie sicher, dass Ihre Benutzer die Ausführung des DirectX-Setups nicht deaktivieren können. Eines dieser Ereignisse erstellt einen fehlbaren Installationsprozess.
Interne Bereitstellung der Debug-DirectX-Runtime
Die Debugruntimes der DirectX-Komponenten werden installiert, wenn das DirectX SDK installiert ist, aber die Installation des SDK auf jedem Testcomputer kann schwierig sein. Sie müssen Den Setupprozess so entwerfen, dass die Debugruntime-DLLs aus Programme\Microsoft DirectX SDK\Developer Runtime\architecture\ nach Windows\system32\ oder in den Ordner des Spiels kopiert werden.
Es wird jedoch dringend empfohlen, die veröffentlichten Laufzeit-DLLs nicht einfach zu kopieren, da sie leicht vergessen werden, sie für das Endprodukt zu entfernen. Legen Sie stattdessen die DirectX-Setupdateien in einem freigegebenen Ordner ab, und führen Sie das Setup automatisch aus dem freigegebenen Ordner aus.
Desktop-Brücke Anwendungen
Desktop-Brücke Anwendungen, die D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 oder XACT verwenden, müssen entweder das Microsoft.DirectX.x86- oder das Microsoft.DirectX.x64-Framework herunterladen, um diese Legacy-DirectX SDK-Komponenten parallel bereitstellen zu können. Alternativ können Sie alle abhängigkeiten entfernen (siehe Entwicklerhandbuch für die verteilbare Version von XAudio 2.9 und die Blogbeiträge Leben ohne D3DX und XINPUT und Windows 8).