Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment déployer les composants Direct3D 11 sur un système si nécessaire.
- Vue d’ensemble
- Direct3D 11.3
- Direct3D 11.2
- Direct3D 11.1
- D3D11InstallHelper.dll
- D3D11Install.exe
- intégration dans les programmes d’installation
- intégration dans InstallShield
- intégration dans un package MSI
- conseils de débogage
- paramètres d’entreprise
- articles connexes
Aperçu
L’API Direct3D 11 étend l’API Direct3D 10.1 existante avec prise en charge du rendu multithread et de la création de ressources, du nuanceur de calcul, du pavage matériel, de la compression de texture BC6H/BC7 et du modèle de nuanceur HLSL 5.0 avec liaison de nuanceur dynamique. En plus du composant Direct3D 11, un certain nombre de composants graphiques supplémentaires sont inclus dans le runtime DirectX 11 : Direct3D 11, DXGI 1.1, 10level9, warP10 software rendering device, Direct2D, DirectWrite et une mise à jour de Direct3D 10.1 avec prise en charge de 10level9 et WARP10. Pour plus d’informations sur ces composants graphiques Windows et d’autres composants graphiques Windows, consultez API Graphics dans Windows.
Tous ces nouveaux composants graphiques sont intégrés aux systèmes d’exploitation Windows 7 et Windows Server 2008 R2. L’API Direct3D 11 et les composants associés peuvent également être installés sur Windows Vista à l’aide d’une mise à jour système à partir de Windows Update. Cette mise à jour nécessite Windows Vista et Service Pack 2. Les utilisateurs finaux avec des mises à jour automatiques activées auront donc probablement déjà installé les composants Direct3D 11, comme tous les utilisateurs de Windows 7.
L’exemple D3D11InstallHelper est conçu pour simplifier la détection de l’API Direct3D 11, installer automatiquement la mise à jour système, le cas échéant, sur l’ordinateur d’un utilisateur final et fournir les messages appropriés à l’utilisateur final lors d’une procédure manuelle si un Service Pack plus récent est requis.
Note
Le compilateur HLSL (D3DCompile*.dll) et la bibliothèque utilitaire D3DX pour Direct3D 11 (D3DX11*.dll) ne sont pas intégrés à une version du système d’exploitation Windows, mais ils peuvent être déployés dans le cadre du programme d’installation d’une application à l’aide de la technologie DirectSetup existante ; Pour plus d’informations sur l’utilisation de DirectSetup, consultez Installation de DirectX pour les développeurs de jeux. « Effets 11 » est disponible en tant que bibliothèque de prise en charge de source partagée à Effects for Direct3D 11 Update, et vous pouvez l’inclure directement dans une application (comme la bibliothèque utilitaire DXUT). Par conséquent, il n’a pas d’exigences supplémentaires de redistribution au moment de l’exécution.
Direct3D 11.3
Windows 10 est fourni avec l’API Direct3D 11.3 intégrée. Consultez fonctionnalités Direct3D 11.3 pour obtenir la liste des nouvelles fonctionnalités de l’API Direct3D 11.3.
Direct3D 11.2
Windows 8.1 et Windows Server 2012 R2 sont fournis avec l’API Direct3D 11.2 intégrée. Consultez fonctionnalités Direct3D 11.2 pour obtenir la liste des nouvelles fonctionnalités de l’API Direct3D 11.2.
Direct3D 11.1
Windows 8 et Windows Server 2012 sont fournis avec l’API Direct3D 11.1 intégrée. La prise en charge partielle de l’API Direct3D 11.1 est disponible sur Windows 7 ou Windows Server 2008 R2 avec la mise à jour de plateforme pour Windows 7 installée. Pour plus d’informations sur la mise à jour de plateforme pour Windows 7, consultez Mise à jour de plateforme pour Windows 7.
D3D11InstallHelper.dll
D3D11InstallHelper.dll héberge les fonctionnalités principales pour détecter les composants Direct3D 11 et effectuer la mise à jour du système via le service Windows Update le cas échéant. La DLL n’affiche aucun message ou boîte de dialogue directement.
La DLL se compose des points d’entrée suivants :
-
CheckDirect3D11Status
-
Cette fonction effectue les vérifications nécessaires et retourne l’état de Direct3D 11 sur cet ordinateur. Cette fonction ne nécessite pas de droits d’administrateur.
- Un état de D3D11IH_STATUS_INSTALLED indique que Direct3D 11 est déjà installé sur l’ordinateur et est prêt à être utilisé.
- D3D11IH_STATUS_NOT_SUPPORTED indique que cette version de Windows ne prend pas en charge Direct3D 11 ou les technologies associées.
- Un état de D3D11IH_STATUS_NEED_LATEST_SP indique que la dernière version de Windows Vista Service Pack doit être installée par l’utilisateur.
- Enfin, un état de D3D11IH_STATUS_REQUIRES_UPDATE indique que le système n’a pas installé Direct3D 11, mais que la mise à jour du système s’applique à cette version de Windows.
-
DoUpdateForDirect3D11
-
Cette fonction utilise l’API Windows Update pour effectuer la mise à jour système pour installer Direct3D 11 sur ce système, le cas échéant. Notez que cette fonction nécessite une connectivité réseau à Windows Update pour réussir, ainsi que des droits d’administration. Il prend une fonction de rappel de progression facultative et un pointeur de contexte utilisateur et retourne un code de résultat final une fois terminé.
- Le résultat D3D11IH_RESULT_SUCCESS indique que la mise à jour système a été appliquée et est prête à être utilisée, tandis que D3D11IH_RESULT_SUCCESS_REBOOT indique que la mise à jour du système nécessite le redémarrage de l’ordinateur avant sa fin. Notez que cette fonction ne planifie pas de redémarrage du système.
- D3D11IH_RESULT_NOT_SUPPORTED indique que la mise à jour système ne s’applique pas à cette version de Windows. Ce résultat ne doit pas se produire si cette fonction est appelée uniquement après avoir obtenu un état de D3D11IH_STATUS_REQUIRES_UPDATE à partir de CheckDirect3D11Status.
- Le résultat de D3D11IH_RESULT_UPDATE_NOT_FOUND indique que le package de mise à jour système n’a pas été trouvé sur les serveurs Windows Update.
- Si le téléchargement ou l’installation de Windows Update échoue, D3D11IH_RESULT_UPDATE_DOWNLOAD_FAILED ou D3D11IH_RESULT_UPDATE_INSTALL_FAILED sera retourné en conséquence.
- Si une erreur de connectivité réseau est retournée à partir de l’API Windows Update, le résultat D3D11IH_RESULT_WU_SERVICE_ERROR est retourné, indiquant que le problème peut être intermittent ou lié à la configuration réseau ou aux paramètres de pare-feu. Une nouvelle tentative de la fonction de mise à jour peut réussir.
Pour plus d’informations sur l’API Windows Update, consultez 'API de l’agent Windows Update.
D3D11Install.exe
Note
D3D11Install.exe nécessite l’exécution de D3D11InstallHelper.dll.
D3D11Install.exe est un outil permettant d’utiliser D3D11InstallHelper.dll en tant que programme d’installation autonome avec des messages d’interface utilisateur et d’utilisateur final, ainsi qu’un exemple d’utilisation appropriée de la DLL. Le processus se termine par un 0 si Direct3D 11 est déjà installé, si la mise à jour du système s’applique correctement sans nécessiter de redémarrage du système, si une installation de Service Pack est requise ou si Direct3D 11 n’est pas pris en charge par cet ordinateur. Un 1 est retourné si la mise à jour système est appliquée correctement et nécessite un redémarrage du système. Un 2 est retourné pour d’autres conditions d’erreur. Notez que ce fichier exécutable nécessite l’exécution des droits d’administrateur et qu’il a un manifeste qui demande une élévation lors de l’exécution sur Windows Vista ou Windows 7 avec UAC activé. D3D11Install.exe pouvez être utilisé comme outil autonome pour déployer la mise à jour Direct3D 11, ou il peut être utilisé directement par les programmes d’installation.
Il prend en charge les commutateurs de ligne de commande suivants :
-
/quiet
-
Affiche aucun message, invite, boîtes de dialogue de progression ou messages d’erreur.
-
/passive
-
Affiche aucun message, invite ou message d’erreur, mais affiche la boîte de dialogue de progression.
-
/minimal
-
Affiche uniquement des invites minimales.
-
/y
-
Supprime l’invite à confirmer l’installation de la mise à jour, si nécessaire et applicable, pour une installation standard et minimale.
-
/langid décimal
-
Force le code d’identificateur de langue à utiliser lors de l’affichage des messages et des ressources de boîte de dialogue de l’utilisateur final. La valeur par défaut est 1024, qui utilise le paramètre de langue par défaut système.
-
/wu
-
Force l’utilisation de Windows Update plutôt que la valeur par défaut du système, qui peut être Windows Server Update Services (WSUS) s’exécutant sur un serveur managé ou une autre configuration non standard.
Intégration dans les programmes d’installation
Pour se conformer à l’installation facile du support, Condition technique 3.1 pour les jeux pour Windows, vous devez prendre soin de vous permettre de présenter les invites de l’utilisateur final au début du processus d’installation et de s’assurer qu’il n’y a pas plusieurs invites d’élévation liées à l’UAC. Il existe trois choix de base pour atteindre cet objectif :
- La méthode la plus simple consiste à exécuter la D3D11Install.exe avec le commutateur de ligne de commande /minimal. Cette opération doit être effectuée tôt dans le programme d’installation Q&A, et l’installation doit utiliser la valeur de retour 1 pour indiquer qu’un redémarrage doit être planifié à la fin de l’installation. L’exécution du programme nécessite des droits d’administration.
- Utilisez D3D11InstallHelper.dll directement pour détecter la nécessité de la mise à jour, en fournissant tous les messages de l’utilisateur final nécessaires à l’état D3D11IH_STATUS_NEED_LATEST_SP, où la résolution nécessite des opérations manuelles utilisateur. Le résultat de l’état de D3D11IH_STATUS_NOT_SUPPORTED peut être utilisé pour contrôler l’installation des ressources liées à Direct3D 11, ou comme condition d’erreur pour les applications Direct3D 11 uniquement, mais il n’est pas nécessairement un message utile de l’utilisateur final. Pour l’état D3D11IH_STATUS_REQUIRES_UPDATE, le programme d’installation peut utiliser directement le point d’entrée DLL DoUpdateForDirect3D11 pour effectuer la mise à jour et gérer les différents messages de l’utilisateur final résultants. Vous trouverez des exemples de messages standard en examinant la boîte de dialogue D3D11Install.exe et les ressources de table de chaînes. Le point d’entrée de mise à jour nécessite des droits d’administrateur.
- Une approche hybride consiste à vérifier l’état avec D3D11InstallHelper.dll, et dans le cas du code d’état D3D11IH_STATUS_NEED_LATEST_SP ou D3D11IH_STATUS_REQUIRES_UPDATE, D3D11Install.exe pouvez être exécuté avec les commutateurs /minimal et /y pour afficher la boîte de dialogue ou pour effectuer la mise à jour, si nécessaire. Ces étapes doivent être effectuées au début du processus d’installation, généralement immédiatement après le Q&A, et l’exécution de l’exécutable nécessite des droits d’administration.
Intégration à InstallShield
La gestion du déploiement Direct3D 11 à partir de l’installScript d’InstallShield est facilement effectuée à l’aide de l’exemple D3D11InstallHelper. Les étapes requises pour s’intégrer à InstallShield à l’aide d’InstallScript sont les suivantes (à l’aide de la méthode 3, décrite dans la section précédente) :
Ouvrez un projet InstallScript dans l’éditeur InstallShield.
Ajoutez D3D11InstallHelper.dll et D3D11Install.exe au projet dans support fichiers.
Pour ajouter les fichiers au projet InstallShield
- Sous l’onglet concepteur d’installation, cliquez sur Support Files/Billboards sous Comportement et logique dans le volet de navigation situé à gauche.
- Cliquez sur langue indépendante, puis cliquez avec le bouton droit dans la fenêtre Fichiers, puis sélectionnez Insérer des fichiers. Accédez à ajouter D3D11InstallHelper.dll et D3D11Install.exe. L’emplacement par défaut de ces fichiers est : SDK root\Samples\C++\Misc\Bin\x86
Dans l’Explorateur InstallScript, cliquez sur le fichier InstallScript (généralement Setup.rul) qui appelle la DLL ou l’exécutable, situé sous Comportement et Logique dans le volet de navigation de gauche.
Collez le code InstallScript suivant dans le fichier en haut :
#define D3D11IH_STATUS_INSTALLED 0 #define D3D11IH_STATUS_NOT_SUPPORTED 1 #define D3D11IH_STATUS_REQUIRES_UPDATE 2 #define D3D11IH_STATUS_NEED_LATEST_SP 3 #define D3D11IH_STATUS_ERROR -1 prototype NUMBER D3D11InstallHelper.CheckDirect3D11StatusIS() ;
#define D3D11IH_RESULT_SUCCESS 0 #define D3D11IH_RESULT_SUCCESS_REBOOT 1 #define D3D11IH_RESULT_NOT_SUPPORTED 2 #define D3D11IH_RESULT_UPDATE_NOT_FOUND 3 #define D3D11IH_RESULT_UPDATE_DOWNLOAD_FAILED 4 #define D3D11IH_RESULT_UPDATE_INSTALL_FAILED 5 #define D3D11IH_RESULT_WU_SERVICE_ERROR 6 #define D3D11IH_RESULT_ERROR -1 prototype NUMBER D3D11InstallHelper.DoUpdateForDirect3D11IS(BOOL) ; ```
Collez le code InstallScript suivant dans le fichier dans la fonction OnFirstUIBefore, juste avant le retour 0 :
Dlg_D3D11: UseDLL( SUPPORTDIR ^ "D3D11InstallHelper.DLL" ); nResult = D3D11InstallHelper.CheckDirect3D11StatusIS(); UnUseDLL( SUPPORTDIR ^ "D3D11InstallHelper.DLL" ); if ( nResult = D3D11IH_STATUS_REQUIRES_UPDATE || nResult = D3D11IH_STATUS_NEED_LATEST_SP) then nResult = LaunchAppAndWait( SUPPORTDIR^"D3D11Install.exe", "/minimal /y", WAIT); if ( nResult < 0 ) then MessageBox("Unable to launch D3D11Install.exe", SEVERE); elseif ( nResult == 1 ) then BATCH_INSTALL = 1; endif; endif;
Intégration dans un package MSI
Voici une description générale des étapes requises pour intégrer le déploiement Direct3D 11 à l’aide d’actions personnalisées MSI (à l’aide de la méthode 3, décrite plus haut dans cette rubrique) :
- Ajoutez une propriété à la table msi Property appelée RelativePathToD3D11IH qui contient le chemin d’accès relatif à D3D11Install.exe et D3D11InstallHelper.dll pendant l’installation (il s’agit généralement de l’image multimédia). Cela définit également une propriété MSI D3D11IH_STATUS à l’état retourné par CheckDirect3D11Status (une propriété de chaîne égale au symbole d’énumération ou à « ERROR »).
- Après l’action CostFinalize, appelez la fonction D3D11InstallHelper.dll SetD3D11InstallMSIProperties en tant qu’action personnalisée immédiate pour définir les propriétés MSI appropriées pour les autres actions personnalisées.
- Lors de l’installation, déclenchez une action personnalisée différée après l’action InstallFiles qui appelle la fonction D3D11InstallHelper.dll DoD3D11InstallUsingMSI. L’action personnalisée doit définir l’indicateur msidbCustomActionTypeNoImpersonate à exécuter dans un contexte élevé.
- Après l’action InstallFinalize, appelez la fonction D3D11InstallHelper.dll FinishD3D11InstallUsingMSI en tant qu’action personnalisée immédiate pour gérer le code de résultat de la demande de redémarrage réussie, si nécessaire.
Cette procédure est décrite en détail dans les instructions suivantes, qui décrivent un processus qui peut être effectué à l’aide d’un éditeur MSI, tel que l’éditeur Orca. Certains éditeurs MSI ont des Assistants qui simplifient certaines de ces étapes de configuration.
Configurer un package MSI pour l’intégration à D3D11InstallHelper.dll
Ouvrez le package MSI dans Orca.
Ajoutez la ligne indiquée dans le tableau suivant à la table binaire dans le package MSI.
Nom Données D3D11IH Chemin d’accès de fichier à la DLL\D3D11InstallHelper.dll Note
Ce fichier sera incorporé dans le package MSI. Vous devez donc effectuer cette étape chaque fois que vous recompilez D3D11InstallHelper.dll.
Ajoutez les lignes indiquées dans le tableau suivant à la table CustomAction dans le package MSI.
Action Type Source Cible Direct3D11SetProps msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 D3D11IH SetD3D11InstallMSIProperties Direct3D11DoInstall msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3137 D3D11IH DoD3D11InstallUsingMSI Direct3D11Finish msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 D3D11IH FinishD3D11InstallUsingMSI Ajoutez les valeurs affichées pour Action, Condition et Sequence dans le tableau suivant à la table InstallExecuteSequence dans le package MSI.
Action Condition Séquence Notes Direct3D11SetProps 1016 Le numéro de séquence place l’action peu après CostFinalize. Direct3D11DoInstall NON installé 4004 Cette action personnalisée se produit uniquement lors d’une nouvelle installation pour tous les utilisateurs. Le numéro de séquence place l’action après InstallFiles et après les restaurations. Direct3D11Finish 6615 Le numéro de séquence place l’action peu après InstallFinalize. Ajoutez la ligne indiquée dans le tableau suivant à la table Property dans le package MSI.
Propriété Valeur RelativePathToD3D11IH chemin d’accès de fichier relatif qui contient D3D11Install.exe et D3D11InstallHelper.dll Note
L’emplacement spécifié par le chemin d’accès est relatif à l’emplacement spécifié par le chemin d’installation, par exemple « redist\ ».
Enregistrez le package MSI. Pour plus d’informations sur les packages MSI et Windows Installer, consultez Windows Installer.
Conseils de débogage
Les D3D11InstallHelper.dll et les D3D11Install.exe peuvent être générés avec la configuration de débogage dans Visual Studio, et ces versions impriment des messages dans le mécanisme de sortie de débogage Windows standard.
Paramètres d’entreprise
L’exemple D3D11InstallHelper est conçu pour le déploiement standard via Windows Update, qui est le scénario le plus courant pour l’installation d’un jeu par les consommateurs. Toutefois, de nombreux développeurs de jeux, travaillant pour les éditeurs et dans les studios de développement, le font dans les paramètres d’entreprise qui ont un serveur géré localement fournissant des mises à jour logicielles à l’aide de la technologie WSUS (Windows Server Update Services). Dans ce type d’environnement, l’administrateur informatique local a un contrôle d’approbation sur les mises à jour mises à disposition des ordinateurs au sein du réseau d’entreprise et la version consommateur standard de la base de connaissances de mise à jour 971644 n’est pas disponible.
Il existe trois solutions de base pour déployer DirectX 11 dans les paramètres d’entreprise/entreprise :
- Dans certaines configurations, il est possible de vérifier directement Windows Update plutôt que d’utiliser le serveur WSUS géré localement. Pour cette raison, D3D11InstallHelper prend en charge le commutateur de ligne de commande /wu. Toutefois, tous les réseaux d’entreprise n’autorisent pas les connexions aux serveurs Microsoft publics.
- L’administrateur informatique local peut approuver la base de connaissances 971512, une mise à jour prise en charge par l’entreprise déployée à partir de WSUS, qui inclut l’API Direct3D 11. Il s’agit de la seule option permettant à un utilisateur standard d’obtenir la mise à jour Direct3D 11 dans un environnement entièrement verrouillé.
- Vous pouvez également installer manuellement 971512 ko.
Il est très rare que l’ordinateur d’un joueur puisse uniquement obtenir des mises à jour à partir d’un serveur WSUS géré localement, et ce n’est que les développeurs dans les grandes organisations susceptibles d’être dans de tels environnements.