Condividi tramite


Installazione DirectX per sviluppatori di giochi

Questo articolo è destinato a risolvere alcune delle domande comuni sul runtime DirectX e sull'uso di DirectSetup per installare DirectX.

Importante

DirectX SDK legacy è alla fine della vita, ma è ancora disponibile per supportare i vecchi giochi, esercitazioni e progetti. I nuovi progetti non devono usarli. L'uso di DirectX SDK legacy richiede l'uso di DirectSetup deprecato per componenti come D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 e XACT. Per altre informazioni sullo stato corrente di DirectX SDK, vedere Dove si trova DirectX SDK?e il post di blog Not So Direct Setup.

DirectX Runtime

Il runtime DirectX è costituito da componenti principali e componenti facoltativi.

I componenti principali, ad esempio Direct3D e DirectInput, sono considerati parte del sistema operativo. I componenti di base per DirectX 9.0c non sono stati modificati dopo l'aggiornamento di DirectX SDK Summer 2004 e corrispondono a quanto rilasciato con Microsoft Windows XP SP2, Windows XP Pro x64 Edition e Windows Server 2003 SP1. Windows Vista include DirectX 10, che supporta Windows Display Driver Model (WDDM) e Direct3D 10.x. Windows 7 e Windows Vista supportano DirectX 11, che supporta Direct3D 11, Direct2D, DirectWrite, il dispositivo di rendering software WARP10 e i livelli di funzionalità 10level9. Per altri dettagli, vedere API grafiche in Windows.

I componenti facoltativi vengono rilasciati negli aggiornamenti di DirectX SDK e includono D3DX, XACT, XAudio2, XINPUT, Managed DirectX e altri componenti di questo tipo. Molti dei componenti facoltativi vengono aggiornati regolarmente per integrare il feedback dei clienti ed esporre nuove funzionalità.

Numero di versione DirectX

Il numero di versione DirectX, ad esempio 9.0c, fa riferimento solo alla versione dei componenti principali, ad esempio Direct3D, DirectInput o DirectSound. Questo numero non copre le versioni dei vari componenti facoltativi rilasciati in DirectX SDK, ad esempio D3DX, XACT, XINPUT e così via.

In generale, il numero di versione DirectX non è significativo tranne che come riferimento rapido ai bit di runtime core. Questo numero non deve essere usato per verificare se il runtime DirectX corretto è già installato, perché non tiene conto dei componenti DirectX facoltativi.

Librerie DirectX

In passato, i componenti facoltativi di DirectX SDK, incluso D3DX, sono stati rilasciati come librerie statiche. Tuttavia, queste librerie vengono ora rilasciate come librerie simili dinamiche (DLL) a causa dell'aumento della richiesta di procedure di sicurezza migliori. Le DLL consentono la manutenzione del codice rilasciato in precedenza. Se questi componenti sono stati distribuiti come librerie statiche, non sarebbe possibile per Microsoft risolvere i problemi di sicurezza rilevati dopo il rilascio.

Man mano che le funzionalità vengono aggiunte o modificate ai componenti facoltativi, anche i nomi delle DLL corrispondenti vengono modificati per garantire che nessuna regressione venga causata da giochi esistenti che usano componenti rilasciati. Le DLL per ogni componente sono attive side-by-side e gli sviluppatori di giochi possono scegliere esattamente la versione DLL usata dal gioco collegando la libreria di importazione corrispondente.

Anche se assicurarsi che le DLL siano installate in un sistema non sia altrettanto semplice da collegare alle librerie statiche, alcune modifiche sono state apportate a DirectX SDK per risolvere il problema del modello DLL:

  • DirectX redistributable può essere configurato in modo da contenere solo i componenti richiesti dall'applicazione per ridurre al minimo le dimensioni di distribuzione e supporti.
  • Il file della cartella ridistribuibile, Programmi\DirectX SDK\Redist\, now contains a cabinet (.cab) per ogni possibile componente facoltativo, quindi non è necessario esaminare un SDK meno recente per trovarli.
  • L'installazione dell'SDK stesso installa ogni possibile componente facoltativo.
  • Una ridistribuibile DirectX che contiene tutti i componenti facoltativi è disponibile sia come programma di installazione basato sul Web che come pacchetto scaricabile; per altre informazioni, vedere il Centro per sviluppatori DirectX (DirectX).

Installazione di DirectX dal programma di installazione del gioco

Di seguito sono riportate le procedure consigliate per aggiungere l'installazione di DirectX al programma di installazione di un gioco:

Termine Descrizione
Installare i componenti ridistribuibili ogni volta.
Il processo di installazione di un gioco deve installare i componenti ridistribuibili DirectX durante ogni singola installazione senza consentire agli utenti di rifiutarlo esplicitamente. Se si consente di rifiutare esplicitamente, alcuni utenti indovinano che non ne hanno bisogno e, se effettivamente lo fanno, il gioco non verrà eseguito.
Consenti al programma di installazione DirectX di controllare la presenza di componenti facoltativi.
Non presupporre che i componenti facoltativi più recenti siano già installati in un sistema, perché Windows Update e Service Pack non forniscono alcun componente facoltativo di DirectX. È necessario installare il runtime DirectX eseguendo dxsetup.exe direttamente o chiamando DirectSetup.
Configurare in modo invisibile all'utente.
Avviare l'installazione in modalità invisibile all'utente in modo che gli utenti non ignorino accidentalmente l'aggiornamento del runtime DirectX. A tale scopo, avviare dxsetup.exe con il comando seguente:
   path-to-redistributable\dxsetup.exe /silent
oppure chiamando DirectSetup e non visualizzando alcuna interfaccia utente.
Combinare le accettazione del contratto di licenza.
Se si richiede all'utente di accettare un contratto di licenza, combinarla con la richiesta di accettazione del contratto di licenza DirectX durante l'installazione in modalità invisibile all'utente, in modo che la richiesta di accettazione degli EULA venga eseguita una sola volta. La richiesta dovrebbe verificarsi prima di installare qualsiasi elemento in modo che, se l'utente non accetta, non si verificherà un'installazione non riuscita e parziale.
Eseguire dxsetup o chiamare DirectSetup.
Poiché il numero di versione DirectX non fa riferimento a nulla tranne i componenti DirectX principali, non controllare una versione installata prima di eseguire dxsetup.exe o chiamare DirectSetup. Inoltre, non verificare l'esistenza di un file per verificare se è già installato un componente facoltativo, poiché questo in genere non determinerà correttamente quando esiste un componente, ma richiede l'aggiornamento. Tuttavia, il pacchetto di installazione di DirectX determinerà rapidamente questa operazione ed eseguirà l'azione corretta.

Pacchetti di installazione di piccole dimensioni

È possibile creare pacchetti di installazione più piccoli per DirectX rimuovendo il contenuto della cartella Ridistribuibile DirectX fino al set minimo di file necessari per rendere il programma di installazione funzionante e mantenendo tutti i componenti aggiuntivi usati dal gioco.

A seconda delle specifiche minime, potrebbe non essere necessario includere nemmeno i file cab DirectX 9.0c principali nella cartella ridistribuibile del supporto di installazione. La maggior parte delle installazioni di Windows XP ha Service Pack 2, che include i componenti Principali di DirectX 9.0c, quindi l'operazione di installazione di DirectX sarà molto veloce e non richiederà un riavvio. Il pacchetto più piccolo che può essere creato è di circa 3 MB e può essere compresso a circa metà di tale dimensione. Un pacchetto simile a questo contiene una versione della DLL D3DX e richiede che DirectX 9.0c sia già presente.

Il set minimo di file necessari per compilare un pacchetto ridistribuibile sono i file seguenti, che si trovano nella cartella Redist di DirectX SDK (Programmi\DirectX SDK\Redist):

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

Aggiungere a questi file CAB per i componenti da installare. Se è necessario che gli utenti dell'applicazione abbiano già DirectX 9.0c, non è necessario includere DirectX.cab o dxnt.cab, che costituiscono la maggior parte dei requisiti di spazio. DirectX.cab è necessario solo per Windows 98 e Windows ME; dxnt.cab è necessario solo per Windows 2000, Windows XP e Windows XP SP1; e dxdllreg_x86.cab è necessario solo per Windows 2000, Windows XP RTM, Windows XP SP1 e Windows Server 2003 RTM. Inoltre, se non si usa DirectShow o si presuppone che sia già installato, è possibile omettere BDA.cab, BDANT.cabe BDAXP.cab.

Nota

È possibile presupporre che gli utenti dell'applicazione dispongano già di DirectX 9.0c se è stato installato da una versione precedente dell'applicazione, si forzano gli utenti a eseguire manualmente l'aggiornamento tramite il programma di installazione Web oppure si presuppone che abbiano Windows XP SP2 o versione successiva.

Continuando con questo esempio, se si usa solo la versione a 32 bit di D3DX per aprile 2006, è possibile aggiungere Apr2006_d3dx9_30_x86.cab. Se si usa la versione a 32 bit di agosto 2006 a 32 bit di XINPUT, si aggiunge Aug2006_xinput_x86.cab.

Se si dispone di un'applicazione a 64 bit nativa, è necessario aggiungere le versioni _x64. Tuttavia, se si dispone di un'applicazione a 32 bit in esecuzione in un sistema operativo a 64 bit, le versioni a 32 bit delle DLL funzioneranno.

È quindi possibile distribuire questo pacchetto di file e avviare DirectSetup in modalità invisibile all'utente o eseguire dxsetup.exe nella shell dei comandi in modalità invisibile all'utente. Ricordarsi di non proteggere questo pacchetto da qualsiasi controllo della versione dei file e assicurarsi che gli utenti non possano rifiutare esplicitamente di eseguire l'installazione di DirectX. Uno di questi eventi crea un processo di installazione fallible.

Distribuzione interna del runtime DirectX di debug

I runtime di debug dei componenti DirectX vengono installati quando è installato DirectX SDK, ma l'installazione dell'SDK in ogni computer di test può risultare dolorosa. È necessario progettare il processo di installazione per copiare le DLL di runtime di debug da Programmi\Microsoft DirectX SDK\Developer Runtime\architecture\ a Windows\system32\ o nella cartella del gioco.

Tuttavia, è consigliabile non copiare semplicemente le DLL di runtime rilasciate perché è facile dimenticare di rimuoverle per il prodotto finale. Inserire invece i file di installazione DirectX in una cartella condivisa ed eseguire il programma di installazione automaticamente dalla cartella condivisa.

Applicazioni Desktop Bridge

Le applicazioni Desktop Bridge che usano D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 o XACT devono scaricare il Microsoft.DirectX.x86 o il framework Microsoft.DirectX.x64 per distribuire questi componenti legacy di DirectX SDK affiancati. In alternativa, è possibile rimuovere tutte queste dipendenze( vedere Developer guide for redistributable version of XAudio 2.9e i post di blog Living without D3DX e XINPUT e Windows 8).