Partager via


Installation de DirectX pour les développeurs de jeux

Cet article est destiné à répondre à certaines des questions courantes sur le runtime DirectX et l’utilisation de DirectSetup pour installer DirectX.

Important

Le SDK DirectX hérité est en fin de vie, mais il est toujours disponible pour prendre en charge d’anciens jeux, tutoriels et projets. Les nouveaux projets ne doivent pas l’utiliser. L’utilisation du Kit de développement logiciel (SDK) DirectX hérité nécessite l’utilisation de DirectSetup déconseillé pour des composants tels que D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 et XACT. Pour plus d’informations sur l’état actuel du Kit de développement logiciel (SDK) DirectX, consultez Où se trouve le Kit de développement logiciel (SDK) Direct ?, et le billet de blog Pas si direct setup.

DirectX Runtime

Le runtime DirectX se compose de composants principaux et de composants facultatifs.

Les composants principaux, tels que Direct3D et DirectInput, sont considérés comme faisant partie du système d’exploitation. Les composants principaux de DirectX 9.0c n’ont pas changé depuis la mise à jour d’été 2004 du SDK DirectX, et ils correspondent à ce qui a été publié avec Microsoft Windows XP SP2, Windows XP Pro Édition x64 et Windows Server 2003 SP1. Windows Vista inclut DirectX 10, qui prend en charge le modèle de pilote d’affichage Windows (WDDM) et Direct3D 10.x. Windows 7 et Windows Vista prennent en charge DirectX 11, qui prend en charge Direct3D 11, Direct2D, DirectWrite, le périphérique de rendu logiciel WARP10 et les niveaux de fonctionnalités 10level9. Pour plus d’informations, consultez API graphiques dans Windows .

Les composants facultatifs sont publiés dans les mises à jour du Kit de développement logiciel (SDK) DirectX et incluent D3DX, XACT, XAudio2, XINPUT, Managed DirectX et d’autres composants de ce type. La plupart des composants facultatifs sont régulièrement mis à jour pour intégrer les commentaires des clients et exposer de nouvelles fonctionnalités.

Numéro de version DirectX

Le numéro de version DirectX, par exemple 9.0c, fait référence uniquement à la version des composants principaux, tels que Direct3D, DirectInput ou DirectSound. Ce nombre ne couvre pas les versions des différents composants facultatifs qui sont publiés dans le SDK DirectX, tels que D3DX, XACT, XINPUT, etc.

En règle générale, le numéro de version DirectX n’est pas significatif, sauf en tant que référence rapide aux bits d’exécution principaux. Ce nombre ne doit pas être utilisé pour case activée si le runtime DirectX correct est déjà installé, car il ne prend pas en compte les composants DirectX facultatifs.

Bibliothèques DirectX

Dans le passé, les composants facultatifs du Kit de développement logiciel (SDK) DirectX, y compris D3DX, étaient publiés en tant que bibliothèques statiques. Toutefois, celles-ci sont désormais publiées en tant que bibliothèques de type dynamique (DLL) en raison de la demande accrue de meilleures pratiques de sécurité. Les DLL permettent la maintenance du code précédemment publié. Si ces composants étaient déployés en tant que bibliothèques statiques, Microsoft n’aurait aucun moyen de résoudre les problèmes de sécurité détectés après la publication.

À mesure que des fonctionnalités sont ajoutées ou modifiées aux composants facultatifs, les noms des DLL correspondantes sont également modifiés pour garantir qu’aucune régression n’est provoquée sur les jeux existants qui utilisent des composants publiés. Les DLL de chaque composant sont côte à côte, et les développeurs de jeux peuvent choisir exactement la version de DLL utilisée par le jeu en les liant à la bibliothèque d’importation correspondante.

S’il n’est pas aussi facile de s’assurer que les DLL sont installées sur un système qu’une simple liaison à des bibliothèques statiques, certaines modifications ont été apportées au Kit de développement logiciel (SDK) DirectX pour résoudre la douleur du modèle DLL :

  • Le redistribuable DirectX peut être configuré pour contenir uniquement les composants dont votre application a besoin pour réduire la distribution et la taille des médias.
  • Le dossier redistribuable Program Files\DirectX SDK\Redist\, contient désormais un fichier d’armoire (.cab) pour chaque composant facultatif possible. Vous n’avez donc pas besoin d’extraire un sdk plus ancien pour les trouver.
  • L’installation du Kit de développement logiciel (SDK) lui-même installe tous les composants facultatifs possibles.
  • Un redistribuable DirectX qui contient tous les composants facultatifs est disponible à la fois en tant que programme d’installation web et en tant que package téléchargeable ; Pour plus d’informations, consultez le Centre de développement DirectX (DirectX).

Installation de DirectX par le programme d’installation du jeu

Voici les meilleures pratiques pour ajouter l’installation de DirectX au programme d’installation d’un jeu :

Terme Description
Installez les composants redistribuables à chaque fois.
Le processus d’installation d’un jeu doit installer les composants redistribuables DirectX au cours de chaque installation sans permettre aux utilisateurs de s’en désabonner. Si vous autorisez la désactivation, certains utilisateurs devinent qu’ils n’en ont pas besoin, et s’ils le font réellement, le jeu ne s’exécutera pas.
Laissez le programme d’installation de DirectX case activée pour les composants facultatifs.
Ne partez pas du principe que les derniers composants facultatifs sont déjà installés sur un système, car Windows Update et les Service Packs ne fournissent aucun des composants facultatifs de DirectX. Vous devez installer le runtime DirectX en exécutant dxsetup.exe directement ou en appelant DirectSetup.
Configurez en mode silencieux.
Lancez l’installation en mode silencieux afin que les utilisateurs n’ignorent pas accidentellement la mise à jour du runtime DirectX. Pour ce faire, lancez dxsetup.exe avec la commande suivante :
   path-to-redistributable\dxsetup.exe /silent
ou en appelant DirectSetup et en n’affichant aucune interface utilisateur.
Combiner les acceptations de CLUF.
Si vous invitez l’utilisateur à accepter un CLUF, combinez-le avec l’invite d’acceptation du CLUF DirectX lors de l’installation en mode silencieux afin que l’invite d’acceptation des CLUF se produise une seule fois. L’invite doit se produire avant d’installer quoi que ce soit afin que, si l’utilisateur n’accepte pas, vous ne vous retrouvez pas avec une installation partielle et ayant échoué.
Exécutez simplement dxsetup ou appelez DirectSetup.
Étant donné que le numéro de version directX ne fait référence à rien, sauf aux composants DirectX principaux, ne case activée pas une version installée avant d’exécuter dxsetup.exe ou d’appeler DirectSetup. En outre, ne case activée pas pour que l’existence d’un fichier teste si un composant facultatif est déjà installé, car cela ne détermine généralement pas correctement quand un composant existe, mais nécessite une mise à jour. Toutefois, le package d’installation DirectX le détermine rapidement et effectue l’action appropriée.

Petits packages d’installation

Vous pouvez créer des packages d’installation plus petits pour DirectX en supprimant le contenu du dossier redistribuable DirectX jusqu’à l’ensemble minimal de fichiers requis pour que le programme d’installation fonctionne, et en conservant tous les composants supplémentaires utilisés par votre jeu.

Selon vos spécifications minimales, vous n’aurez peut-être même pas besoin d’inclure les principaux fichiers d’armoire DirectX 9.0c dans le dossier redistribuable de votre support d’installation. Une grande majorité des installations de Windows XP disposent du Service Pack 2, qui inclut les principaux composants DirectX 9.0c, de sorte que l’opération d’installation de DirectX sera très rapide et ne nécessitera pas de redémarrage. Le plus petit package qui peut être créé est d’environ 3 Mo et peut être compressé à environ la moitié de cette taille. Un package comme celui-ci contient une version de la DLL D3DX et nécessite que DirectX 9.0c soit déjà présent.

L’ensemble minimal de fichiers requis pour générer un package redistribuable sont les fichiers suivants, situés dans le dossier Redist du KIT DE DÉVELOPPEMENT LOGICIEL DirectX (Program Files\DirectX SDK\Redist) :

  • dxsetup.exe
  • dsetup32.dll
  • dsetup.dll
  • dxupdate.cab

Ajoutez-y les fichiers d’armoire pour les composants que vous souhaitez installer. Si vous avez besoin que les utilisateurs de votre application disposent déjà de DirectX 9.0c, vous n’avez pas besoin d’inclure DirectX.cab ou dxnt.cab, qui constituent la majeure partie de l’espace requis. DirectX.cab est nécessaire uniquement pour Windows 98 et Windows ME ; dxnt.cab est nécessaire uniquement pour Windows 2000, Windows XP et Windows XP SP1 ; et dxdllreg_x86.cab est requis uniquement pour Windows 2000, Windows XP RTM, Windows XP SP1 et Windows Server 2003 RTM. En outre, si vous n’utilisez pas DirectShow, ou si vous supposez qu’il est déjà installé, vous pouvez omettre BDA.cab, BDANT.cab et BDAXP.cab.

Notes

Vous pouvez supposer que les utilisateurs de votre application disposent déjà de DirectX 9.0c s’il a été installé par une version précédente de votre application, que vous forcez les utilisateurs à effectuer une mise à jour manuelle via le programme d’installation web, ou que vous supposez qu’ils disposent de Windows XP SP2 ou version ultérieure.

Dans cet exemple, si vous utilisez uniquement la version 32 bits de D3DX d’avril 2006, vous pouvez ajouter Apr2006_d3dx9_30_x86.cab. Si vous utilisez la version 32 bits d’août 2006 32 bits de XINPUT, vous ajoutez Aug2006_xinput_x86.cab.

Si vous disposez d’une application 64 bits native, vous devez ajouter les versions _x64. Toutefois, si vous avez une application 32 bits exécutée sur un système d’exploitation 64 bits, les versions 32 bits des DLL fonctionnent.

Vous pouvez ensuite distribuer ce package de fichiers et lancer DirectSetup en mode silencieux ou exécuter dxsetup.exe dans l’interpréteur de commandes en mode silencieux. N’oubliez pas de protéger ce package par une vérification de version des fichiers, et assurez-vous que vos utilisateurs ne peuvent pas refuser d’exécuter le programme d’installation de DirectX. L’un de ces événements crée un processus d’installation faillible.

Déploiement interne du runtime DirectX de débogage

Les runtimes de débogage des composants DirectX sont installés lors de l’installation du Kit de développement logiciel (SDK) DirectX, mais l’installation du Kit de développement logiciel (SDK) sur chaque ordinateur de test peut être douloureuse. Vous devez concevoir votre processus d’installation pour copier les DLL du runtime de débogage à partir de Program Files\Microsoft DirectX SDK\Developer Runtime\architecture\ vers Windows\system32\ ou dans le dossier du jeu.

Toutefois, nous vous recommandons vivement de ne pas simplement copier les DLL d’exécution publiées, car il est facile d’oublier de les supprimer pour le produit final. Au lieu de cela, placez les fichiers d’installation DirectX dans un dossier partagé et exécutez le programme d’installation en mode silencieux à partir du dossier partagé.

Pont du bureau applications

Pont du bureau applications qui utilisent D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 ou XACT doivent télécharger l’infrastructure Microsoft.DirectX.x86 ou Microsoft.DirectX.x64 afin de déployer ces composants hérités du SDK DirectX côte à côte. Vous pouvez également supprimer toutes ces dépendances (voir le Guide du développeur pour la version redistribuable de XAudio 2.9, et les billets de blog Living without D3DX et XINPUT et Windows 8).