Dela via


DirectX-installation för spelutvecklare

Den här artikeln är avsedd att ta upp några vanliga frågor om DirectX-körningen och använda DirectSetup för att installera DirectX.

Viktig

Den äldre DirectX SDK är i slutet av livet, men den är fortfarande tillgänglig för att stödja gamla spel, självstudier och projekt. Nya projekt bör inte använda det. Om du använder det äldre DirectX SDK:t måste du använda den inaktuella DirectSetup för komponenter som D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 och XACT. Mer information om det aktuella tillståndet för DirectX SDK finns i Var finns DirectX SDK?och blogginlägget Inte så direkt installation.

DirectX Runtime

DirectX-körningen består av kärnkomponenter och valfria komponenter.

Kärnkomponenterna, till exempel Direct3D och DirectInput, anses vara en del av operativsystemet. Kärnkomponenterna för DirectX 9.0c har inte ändrats sedan DirectX SDK Summer 2004 Update, och de matchar det som släpptes med Microsoft Windows XP SP2, Windows XP Pro x64 Edition och Windows Server 2003 SP1. Windows Vista innehåller DirectX 10, som stöder Windows Display Driver Model (WDDM) och Direct3D 10.x. Windows 7 och Windows Vista stöder DirectX 11, som stöder Direct3D 11, Direct2D, DirectWrite, WARP10-programvarurenderingsenheten och funktionsnivåerna 10level9. Mer information finns i grafik-API:er i Windows.

De valfria komponenterna släpps i uppdateringar av DirectX SDK och de inkluderar D3DX, XACT, XAudio2, XINPUT, Managed DirectX och andra sådana komponenter. Många av de valfria komponenterna uppdateras regelbundet för att integrera kundfeedback och exponera nya funktioner.

DirectX-versionsnummer

DirectX-versionsnumret, till exempel 9.0c, refererar endast till versionen av kärnkomponenterna, till exempel Direct3D, DirectInput eller DirectSound. Det här numret täcker inte versionerna av de olika valfria komponenterna som släpps i DirectX SDK, till exempel D3DX, XACT, XINPUT och så vidare.

I allmänhet är DirectX-versionsnumret inte meningsfullt förutom som en snabb referens till kärnkörningsbitarna. Det här numret ska inte användas för att kontrollera om rätt DirectX-körning redan är installerad, eftersom det inte tar hänsyn till de valfria DirectX-komponenterna.

DirectX-bibliotek

Tidigare släpptes de valfria komponenterna i DirectX SDK, inklusive D3DX, som statiska bibliotek. Dessa släpps dock nu som dynamiska bibliotek (DLL) på grund av den ökade efterfrågan på bättre säkerhetsmetoder. DLL:er tillåter service av kod som släppts tidigare. Om de här komponenterna har distribuerats som statiska bibliotek finns det inget sätt för Microsoft att åtgärda säkerhetsproblem som hittas efter lanseringen.

När funktioner läggs till eller ändras till de valfria komponenterna ändras även namnen på motsvarande DLL:er för att säkerställa att inga regressioner orsakas av befintliga spel som använder utgivna komponenter. DLL:er för varje komponent live sida vid sida och spelutvecklare kan välja exakt vilken DLL-version som spelet använder genom att länka till motsvarande importbibliotek.

Även om det inte är lika enkelt att se till att DLL:er installeras på ett system som att bara länka till statiska bibliotek, har vissa ändringar gjorts i DirectX SDK för att åtgärda DLL-modellens smärta:

  • DirectX-omdistribuerbar kan konfigureras så att den endast innehåller de komponenter som programmet behöver för att minimera distributions- och mediestorlekar.
  • Den omdistribuerbara mappen Program Files\DirectX SDK\Redist\, now contains a cabinet (.cab) för alla möjliga valfria komponenter, så du behöver inte gräva upp en äldre SDK för att hitta dem.
  • När du installerar själva SDK:et installeras alla möjliga valfria komponenter.
  • En DirectX-omdistribuerbar som innehåller alla valfria komponenter är tillgänglig som både ett webbaserat installationsprogram och som ett nedladdningsbart paket. Mer information finns i DirectX Developer Center (DirectX).

Installation av DirectX av spelets installationsprogram

Följande är metodtipsen för att lägga till installation av DirectX i ett spels installationsprogram:

Begrepp Beskrivning
Installera omdistribuerbara komponenter varje gång.
Ett spels installationsprocess bör installera DirectX-omdistribuerbara komponenter under varje enskild installation utan att tillåta användare att välja bort den. Om du tillåter avaktivering antar vissa användare att de inte behöver det, och om de faktiskt gör det kommer spelet inte att köras.
Låt DirectX-installationsprogrammet söka efter valfria komponenter.
Anta inte att de senaste valfria komponenterna redan är installerade på ett system, eftersom Windows Update och Service Pack inte tillhandahåller någon av DirectX valfria komponenter. Du måste installera DirectX-körningen antingen genom att köra dxsetup.exe direkt eller genom att anropa DirectSetup.
Konfigurera tyst.
Starta installationen i tyst läge så att användarna inte av misstag hoppar över uppdateringen av DirectX-körningen. Du kan göra detta genom att starta dxsetup.exe med följande kommando:
   path-to-redistributable\dxsetup.exe /silent
eller genom att anropa DirectSetup och inte visa något användargränssnitt.
Kombinera eula-godkännanden.
Om du uppmanar användaren att godkänna ett licensavtal kombinerar du det med att uppmana till godkännande av DirectX EULA när du installerar i tyst läge så att uppmaning om godkännande av LICENSavtal bara sker en gång. Frågor bör ske innan du installerar något så att om användaren inte accepterar får du inte en misslyckad och partiell installation.
Kör bara dxsetup eller anropa DirectSetup.
Eftersom DirectX-versionsnumret inte refererar till något annat än directx-kärnkomponenterna kontrollerar du inte en installerad version innan du kör dxsetup.exe eller anropar DirectSetup. Kontrollera inte heller om en fil finns för att testa om en valfri komponent redan är installerad, eftersom detta vanligtvis inte korrekt avgör när en komponent finns men behöver uppdateras. DirectX-konfigurationspaketet kommer dock snabbt att fastställa detta och utföra rätt åtgärd.

Små installationspaket

Du kan skapa mindre installationspaket för DirectX genom att ta bort innehållet i den DirectX-omdistribuerbara mappen till den minimala uppsättning filer som krävs för att installationsprogrammet ska fungera och behålla eventuella ytterligare komponenter som ditt spel använder.

Beroende på dina minsta specifikationer kanske du inte ens behöver inkludera kärnskåpsfilerna för DirectX 9.0c i den omdistribuerbara mappen för installationsmediet. En stor majoritet av Windows XP-installationerna har Service Pack 2, som innehåller de grundläggande DirectX 9.0c-komponenterna, så DirectX-konfigurationsåtgärden kommer att vara mycket snabb och kräver ingen omstart. Det minsta paket som kan skapas är cirka 3 MB och kan komprimeras till ungefär hälften av den storleken. Ett paket som detta innehåller en version av D3DX DLL och kräver att DirectX 9.0c redan finns.

Den minimala uppsättningen filer som krävs för att skapa ett omdistribuerbart paket är följande filer, som finns i directx SDK Redist-mappen (Program Files\DirectX SDK\Redist):

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

Lägg till i dessa kabinettfiler för de komponenter som du vill installera. Om du kräver att användarna av ditt program redan har DirectX 9.0c behöver du inte ta med DirectX.cab eller dxnt.cab, som utgör det mesta av utrymmeskravet. DirectX.cab behövs bara för Windows 98 och Windows ME; dxnt.cab behövs bara för Windows 2000, Windows XP och Windows XP SP1. och dxdllreg_x86.cab krävs endast för Windows 2000, Windows XP RTM, Windows XP SP1 och Windows Server 2003 RTM. Om du inte använder DirectShow, eller om du antar att det redan är installerat, kan du utelämna BDA.cab, BDANT.caboch BDAXP.cab.

Not

Du kan anta att användare av ditt program redan har DirectX 9.0c om det installerades av en tidigare version av ditt program, du tvingar användare att manuellt uppdatera via webbinstallationsprogrammet, eller så antar du att de har Windows XP SP2 eller senare.

Om du fortsätter med det här exemplet kan du lägga till Apr2006_d3dx9_30_x86.cabom du bara använder 32-bitarsversionen av D3DX för april 2006. Om du använder 32-bitarsversionen av XINPUT i augusti 2006 lägger du till Aug2006_xinput_x86.cab.

Om du har ett internt 64-bitarsprogram måste du lägga till _x64 versioner. Men om du har ett 32-bitarsprogram som körs på ett 64-bitars operativsystem fungerar 32-bitarsversionerna av DLL:erna.

Du kan sedan distribuera det här paketet med filer och starta DirectSetup i tyst läge eller köra dxsetup.exe i kommandogränssnittet i tyst läge. Kom ihåg att inte skydda det här paketet genom någon versionskontroll av filer och se till att användarna inte kan välja att inte köra DirectX-installationen. Någon av dessa händelser skapar en fallbar installationsprocess.

Intern distribution av Felsökning av DirectX Runtime

Felsökningskörningarna för DirectX-komponenterna installeras när DirectX SDK installeras, men det kan vara smärtsamt att installera SDK:et på varje testdator. Du måste utforma konfigurationsprocessen för att kopiera DLL:er för felsökningskörning från Program Files\Microsoft DirectX SDK\Developer Runtime\architecture\ till Windows\system32\ eller till spelets mapp.

Vi rekommenderar dock starkt att du inte bara kopierar de utgivna DLL:erna för körning eftersom det är lätt att glömma att ta bort dem för slutprodukten. Placera i stället DirectX-installationsfilerna i en delad mapp och kör installationen tyst från den delade mappen.

Skrivbordsbryggningsprogram

Skrivbordsbryggningsprogram som använder D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 eller XACT måste antingen ladda ned Microsoft.DirectX.x86- eller Microsoft.DirectX.x64-ramverket för att distribuera dessa äldre DirectX SDK-komponenter sida vid sida. Du kan också ta bort alla sådana beroenden – (se Utvecklarguide för omdistribuerbar version av XAudio 2.9och blogginläggen Living utan D3DX och XINPUT och Windows 8).