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 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 Where is the DirectX SDK?, and the blog post Not So Direct Setup.For more details on the current state of the Direct SDK, see Where is the DirectX SDK?, and the blog post Not So Direct Setup.For more details on the current state of the DirectX SDK, see Where is the DirectX SDK?, and the blog post Not So Direct Setup.

DirectX Runtime

Il runtime DirectX è costituito da componenti di base 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 dall'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, ad eccezione di un riferimento rapido ai bit di runtime di base. 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 di tipo dinamico (DLL) a causa della maggiore 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 è possibile consentire a Microsoft di 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 affiancate e gli sviluppatori di giochi possono scegliere esattamente la versione DLL usata dal gioco collegando la libreria di importazione corrispondente.

Pur assicurandosi che le DLL siano installate in un sistema non è altrettanto semplice quanto il collegamento alle librerie statiche, sono state apportate alcune modifiche a DirectX SDK per risolvere il problema del modello DLL:

  • La ridistribuibile DirectX può essere configurata in modo da contenere solo i componenti richiesti dall'applicazione per ridurre al minimo le dimensioni di distribuzione e supporti.
  • La cartella ridistribuibile, Programmi\DirectX SDK\Redist\, ora contiene un file cab (.cab) per ogni componente facoltativo possibile, quindi non è necessario esaminare un SDK precedente 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 DirectX Developer Center (DirectX).

Installazione di DirectX dal programma di installazione del gioco

Di seguito sono riportate le procedure consigliate per l'aggiunta dell'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.
Consentire al programma di installazione DirectX di verificare 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 componenti facoltativi di DirectX. È necessario installare il runtime DirectX eseguendo direttamente dxsetup.exe o chiamando DirectSetup.
Configurare automaticamente.
Avviare la configurazione 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
o chiamando DirectSetup e non visualizzando alcuna interfaccia utente.
Combinare le accettazione del contratto di licenza.
Se viene richiesto all'utente di accettare un contratto di licenza, combinarli 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.
È sufficiente eseguire dxsetup o chiamare DirectSetup.
Poiché il numero di versione DirectX non fa riferimento a nulla tranne i componenti DirectX di base, 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é in genere non determinerà correttamente quando esiste un componente, ma richiede l'aggiornamento. Tuttavia, il pacchetto di installazione di DirectX determinerà rapidamente questo e eseguirà l'azione corretta.

Pacchetti di installazione di piccole dimensioni

Puoi 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 conservando eventuali 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. Una grande maggioranza delle installazioni di Windows XP ha Service Pack 2, che include i componenti principali 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 è costituito dai 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 che si desidera 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.cab e BDAXP.cab.

Nota

È possibile presupporre che gli utenti dell'applicazione abbiano già DirectX 9.0c se è stato installato da una versione precedente dell'applicazione, si forza gli utenti ad aggiornare manualmente 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, aggiungere Aug2006_xinput_x86.cab.

Se si dispone di un'applicazione a 64 bit nativa, è necessario aggiungere le versioni di _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 oppure 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 la configurazione 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ò essere dolorosa. È necessario progettare il processo di installazione per copiare le DLL del 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 l'installazione automaticamente dalla cartella condivisa.

applicazioni Desktop Bridge

Desktop Bridge applicazioni che usano D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 o XACT devono scaricare il framework Microsoft.DirectX.x86 o Microsoft.DirectX.x64 per distribuire questi componenti legacy di DirectX SDK affiancati. In alternativa, è possibile rimuovere tutte queste dipendenze( vedere La guida per gli sviluppatori per la versione ridistribuibile di XAudio 2.9 e i post di blog Living without D3DX e XINPUT e Windows 8).