Compartilhar via


Instalação do DirectX para desenvolvedores de jogos

Este artigo destina-se a abordar algumas das perguntas comuns sobre o runtime do DirectX e usar o DirectSetup para instalar o DirectX.

Importante

O SDK herdado do DirectX está no fim da vida útil, mas ainda está disponível para dar suporte a jogos, tutoriais e projetos antigos. Novos projetos não devem usá-lo. O uso do SDK do DirectX herdado requer o uso do DirectSetup preterido para componentes como D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 e XACT. Para obter mais detalhes sobre o estado atual do SDK do DirectX, consulte Onde está o SDK do DirectX?e a postagem no blog de Instalação Não Tão Direta.

DirectX Runtime

O runtime do DirectX consiste em componentes principais e componentes opcionais.

Os componentes principais, como Direct3D e DirectInput, são considerados parte do sistema operacional. Os principais componentes do DirectX 9.0c não foram alterados desde o SDK do DirectX Summer 2004 Update e correspondem ao que foi lançado com o Microsoft Windows XP SP2, Windows XP Pro x64 Edition e Windows Server 2003 SP1. O Windows Vista inclui o DirectX 10, que dá suporte ao WDDM (Modelo de Driver de Exibição do Windows) e ao Direct3D 10.x. O Windows 7 e o Windows Vista dão suporte ao DirectX 11, que dá suporte ao Direct3D 11, Direct2D, DirectWrite, ao dispositivo de renderização de software WARP10 e aos níveis de recurso 10level9. Consulte APIs gráficas no Windows para obter mais detalhes.

Os componentes opcionais são lançados em atualizações do SDK do DirectX e incluem D3DX, XACT, XAudio2, XINPUT, Managed DirectX e outros desses componentes. Muitos dos componentes opcionais são atualizados regularmente para integrar comentários do cliente e expor novos recursos.

Número de versão do DirectX

O número de versão do DirectX, como 9.0c, refere-se apenas à versão dos componentes principais, como Direct3D, DirectInput ou DirectSound. Esse número não abrange as versões dos vários componentes opcionais que são lançados no SDK do DirectX, como D3DX, XACT, XINPUT e assim por diante.

De um modo geral, o número de versão do DirectX não é significativo, exceto como uma referência rápida aos bits principais de tempo de execução. Esse número não deve ser usado para verificar se o runtime do DirectX correto já está instalado, pois não leva em conta os componentes opcionais do DirectX.

Bibliotecas DirectX

No passado, os componentes opcionais do SDK do DirectX, incluindo D3DX, eram lançados como bibliotecas estáticas. No entanto, elas agora são lançadas como DLL (bibliotecas dinâmicas) devido ao aumento da demanda por melhores práticas de segurança. As DLLs permitem a manutenção do código lançado anteriormente. Se esses componentes fossem implantados como bibliotecas estáticas, não haveria como a Microsoft resolver problemas de segurança encontrados após a versão.

À medida que os recursos são adicionados ou alterados para os componentes opcionais, os nomes das DLLs correspondentes também são alterados para garantir que nenhuma regressão seja causada a jogos existentes que estão usando componentes liberados. As DLLs para cada componente vivem lado a lado e os desenvolvedores de jogos podem escolher exatamente qual versão de DLL o jogo usa vinculando-se à biblioteca de importação correspondente.

Embora garantir que as DLLs estejam instaladas em um sistema não seja tão fácil quanto simplesmente vincular a bibliotecas estáticas, algumas alterações foram feitas no SDK do DirectX para resolver a dor do modelo DLL:

  • O redistribuível DirectX pode ser configurado para conter somente os componentes necessários para que seu aplicativo minimize os tamanhos de distribuição e mídia.
  • A pasta redistribuível, arquivos de programas\DirectX SDK\Redist\, now contains a cabinet (.cab) arquivo para cada componente opcional possível, para que você não precise desenterrar um SDK mais antigo para encontrá-los.
  • A instalação do SDK em si instala todos os componentes opcionais possíveis.
  • Um redistribuível DirectX que contém todos os componentes opcionais está disponível como um instalador baseado na Web e como um pacote para download; consulte o DirectX Developer Center (DirectX) para obter mais informações.

Instalação do DirectX pelo Instalador do Jogo

Veja a seguir as práticas recomendadas para adicionar a instalação do DirectX ao instalador de um jogo:

Prazo Descrição
instalar os componentes redistribuíveis todas as vezes.
O processo de instalação de um jogo deve instalar os componentes redistribuíveis do DirectX durante cada instalação sem permitir que os usuários optem por não fazer isso. Se você permitir a aceitação, alguns usuários adivinharão que não precisam dele e, se realmente o fizerem, o jogo não será executado.
Permitir que o instalador do DirectX verifique se há componentes opcionais.
Não suponha que os componentes opcionais mais recentes já estejam instalados em um sistema, pois o Windows Update e os Service Packs não fornecem nenhum dos componentes opcionais do DirectX. Você deve instalar o runtime do DirectX executando dxsetup.exe diretamente ou chamando DirectSetup.
configurado silenciosamente.
Inicie a instalação no modo silencioso para que os usuários não ignorem acidentalmente a atualização do runtime do DirectX. Você pode fazer isso iniciando dxsetup.exe com o seguinte comando:
   path-to-redistributable\dxsetup.exe /silent
ou chamando DirectSetup e não mostrando nenhuma interface do usuário.
Combinar aceitações de EULA.
Se você solicitar que o usuário aceite um EULA, combine-o com a solicitação de aceitação do DirectX EULA ao instalar no modo silencioso para que a solicitação de aceitação de EULAs ocorra apenas uma vez. A solicitação deve acontecer antes de instalar qualquer coisa para que, se o usuário não aceitar, você não acabe com uma instalação com falha e parcial.
Basta executar dxsetup ou chamar DirectSetup.
Como o número de versão do DirectX não se refere a nada, exceto aos componentes principais do DirectX, não verifique uma versão instalada antes de executar dxsetup.exe ou chamar o DirectSetup. Além disso, não verifique a existência de um arquivo para testar se um componente opcional já está instalado, pois isso geralmente não determinará corretamente quando um componente existe, mas precisa ser atualizado. No entanto, o pacote de instalação do DirectX determinará isso rapidamente e executará a ação certa.

Pequenos pacotes de instalação

Você pode criar pacotes de instalação menores para o DirectX retirando o conteúdo da pasta redistribuível do DirectX até o conjunto mínimo de arquivos necessários para fazer o instalador funcionar e retendo os componentes adicionais que o jogo usa.

Dependendo de suas especificações mínimas, talvez você nem precise incluir os arquivos de gabinete principais do DirectX 9.0c na pasta redistribuível da mídia de instalação. A grande maioria das instalações do Windows XP tem o Service Pack 2, que inclui os principais componentes do DirectX 9.0c, portanto, a operação de instalação do DirectX será muito rápida e não exigirá uma reinicialização. O menor pacote que pode ser criado tem cerca de 3 MB e pode ser compactado para cerca de metade desse tamanho. Um pacote como esse contém uma versão da DLL D3DX e requer que o DirectX 9.0c já esteja presente.

O conjunto mínimo de arquivos necessários para criar um pacote redistribuível são os seguintes arquivos, localizados na pasta Redista do SDK do DirectX (Arquivos de Programas\SDK do DirectX\Redist):

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

Adicione a eles os arquivos de gabinete para os componentes que você deseja instalar. Se você exigir que os usuários do seu aplicativo já tenham o DirectX 9.0c, não será necessário incluir DirectX.cab ou dxnt.cab, que compõem a maior parte do requisito de espaço. DirectX.cab é necessário apenas para Windows 98 e Windows ME; dxnt.cab é necessário apenas para Windows 2000, Windows XP e Windows XP SP1; e dxdllreg_x86.cab só é necessário para Windows 2000, Windows XP RTM, Windows XP SP1 e Windows Server 2003 RTM. Além disso, se você não fizer uso do DirectShow ou assumir que ele já está instalado, poderá omitir BDA.cab, BDANT.cabe BDAXP.cab.

Nota

Você pode supor que os usuários do seu aplicativo já têm o DirectX 9.0c se ele foi instalado por uma versão anterior do seu aplicativo, força os usuários a atualizar manualmente por meio do Web Installer ou pressupõe que eles tenham o Windows XP SP2 ou posterior.

Continuando com este exemplo, se você estiver usando apenas a versão de 32 bits do D3DX para abril de 2006, poderá adicionar Apr2006_d3dx9_30_x86.cab. Se você estiver usando a versão de 32 bits de agosto de 2006 de 32 bits do XINPUT, adicione Aug2006_xinput_x86.cab.

Se você tiver um aplicativo nativo de 64 bits, precisará adicionar as versões _x64. No entanto, se você tiver um aplicativo de 32 bits em execução em um sistema operacional de 64 bits, as versões de 32 bits das DLLs funcionarão.

Em seguida, você pode distribuir esse pacote de arquivos e iniciar o DirectSetup no modo silencioso ou executar dxsetup.exe no shell de comando no modo silencioso. Lembre-se de não proteger esse pacote por qualquer verificação de versão dos arquivos e verifique se os usuários não podem recusar a execução da configuração do DirectX. Qualquer um desses eventos cria um processo de instalação falível.

Implantação interna do Runtime do DirectX de depuração

Os runtimes de depuração dos componentes do DirectX são instalados quando o SDK do DirectX é instalado, mas a instalação do SDK em cada computador de teste pode ser dolorosa. Você precisa projetar seu processo de instalação para copiar as DLLs de runtime de depuração de Arquivos de Programas\Microsoft DirectX SDK\Developer Runtime\architecture\ para Windows\system32\ ou para a pasta do jogo.

No entanto, é altamente recomendável que você não simplesmente copie as DLLs em tempo de execução lançadas porque é fácil esquecer de removê-las para o produto final. Em vez disso, coloque os arquivos de instalação do DirectX em uma pasta compartilhada e execute a configuração silenciosamente da pasta compartilhada.

Aplicativos da Ponte de Área de Trabalho

Aplicativos da Ponte de Área de Trabalho que usam D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 ou XACT devem baixar o Microsoft.DirectX.x86 ou a estrutura Microsoft.DirectX.x64 para implantar esses componentes herdados do SDK do DirectX lado a lado. Como alternativa, você pode remover todas essas dependências ( consulte Guia do Desenvolvedor para a versão redistribuível do XAudio 2.9e as postagens no blog Living without D3DX e XINPUT e Windows 8).