Partilhar via


Instalação do DirectX para desenvolvedores de jogos

Este artigo destina-se a abordar algumas das perguntas comuns sobre o tempo de execução do DirectX e o uso do DirectSetup para instalar o DirectX.

Importante

O SDK do DirectX herdado está em fim de vida, mas ainda está disponível para suportar 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 do blog Configuração não tão direta.

Tempo de execução do DirectX

O tempo de execução do DirectX consiste em componentes principais e componentes opcionais.

Os componentes principais, como Direct3D e DirectInput, são considerados parte do sistema operacional. Os componentes principais do DirectX 9.0c não foram alterados desde a atualização de verão de 2004 do SDK do DirectX 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 suporta o Windows Display Driver Model (WDDM) e o Direct3D 10.x. O Windows 7 e o Windows Vista suportam o DirectX 11, que suporta Direct3D 11, Direct2D, DirectWrite, o dispositivo de renderização de software WARP10 e os níveis de funcionalidade 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, DirectX gerenciado e outros componentes semelhantes. Muitos dos componentes opcionais são atualizados regularmente para integrar o feedback dos clientes 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 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 de tempo de execução principais. Esse número não deve ser usado para verificar se o tempo de execução correto do DirectX já está instalado, porque ele não leva em conta os componentes opcionais do DirectX.

Bibliotecas DirectX

No passado, os componentes opcionais do SDK do DirectX, incluindo o D3DX, eram lançados como bibliotecas estáticas. No entanto, eles agora são lançados como bibliotecas dinâmicas (DLL) devido ao aumento da demanda por melhores práticas de segurança. As DLLs permitem a manutenção de 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 o lançamento.

À 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 aos jogos existentes que estão usando componentes liberados. As DLLs de 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 sejam 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 o problema do modelo de DLL:

  • O DirectX redistribuível pode ser configurado para conter apenas os componentes que seu aplicativo requer para minimizar a distribuição e os tamanhos de mídia.
  • A pasta redistribuível, Arquivos de Programas\DirectX SDK\Redist\, now contains a cabinet (.cabarquivo ) 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 DirectX redistribuível 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

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

Vigência Descrição
Instale os componentes redistribuíveis sempre.
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 usá-lo. Se você permitir a exclusão, alguns usuários adivinharão que não precisam disso e, se realmente precisarem, o jogo não será executado.
Deixe o instalador do DirectX verificar se há componentes opcionais.
Não assuma que os componentes opcionais mais recentes já estão instalados em um sistema, porque o Windows Update e os Service Packs não fornecem nenhum dos componentes opcionais do DirectX. Você deve instalar o tempo de execução do DirectX executando dxsetup.exe diretamente ou chamando DirectSetup.
Configure silenciosamente.
Inicie a instalação no modo silencioso para que os usuários não ignorem acidentalmente a atualização do tempo de execução 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.
Combine aceitações de EULA.
Se você solicitar que o usuário aceite um EULA, combine-o com a solicitação de aceitação do EULA DirectX ao instalar no modo silencioso para que a solicitação de aceitação de EULAs aconteça 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 parcial e com falha.
Basta executar dxsetup ou chamar DirectSetup.
Como o número da 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 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 de atualização. No entanto, o pacote de instalação do DirectX determinará isso rapidamente e executará a ação correta.

Pequenos pacotes de instalação

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

Dependendo das especificações mínimas, talvez nem seja necessário incluir os principais arquivos de gabinete 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 componentes principais 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 este 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 DirectX SDK Redist (Program Files\DirectX SDK\Redist):

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

Adicione a estes 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 só é necessário para Windows 98 e Windows ME; dxnt.cab só é necessário 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.

Observação

Pode assumir que os utilizadores da sua aplicação já têm DirectX 9.0c se tiver sido instalado por uma versão anterior da sua aplicação, forçar os utilizadores a atualizar manualmente através do Web Installer ou assumir que têm 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, você adiciona 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 este pacote de arquivos e iniciar o DirectSetup no modo silencioso ou executádxsetup.exe no shell de comando no modo silencioso. Lembre-se de não proteger este pacote por qualquer verificação de versão de arquivos e certifique-se de que seus usuários não podem optar por não executar a configuração do DirectX. Qualquer um desses eventos cria um processo de instalação falível.

Implantação interna do tempo de execução do DirectX de depuração

Os tempos de execução de depuração dos componentes DirectX são instalados quando o SDK do DirectX é instalado, mas instalar o SDK em cada computador de teste pode ser doloroso. Você precisa projetar seu processo de instalação para copiar as DLLs de tempo de execução 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 de 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 instalação silenciosamente a partir da pasta compartilhada.

Aplicativos do Desktop Bridge

Os aplicativos do Desktop Bridge que usam D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 ou XACT devem baixar o Microsoft.DirectX.x86 ou o Microsoft.DirectX.x64 framework 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 do blog Viver sem D3DX e XINPUT e Windows 8).