Erro DISM 0x8004015 ao instalar .NET Framework 3.5 offline no Windows Server 2019 (guia completo)

Aprenda a remover o erro “A DISM session could not be opened. Error: 0x8004015” ao instalar o .NET Framework 3.5 offline no Windows Server 2019. Guia passo a passo com comandos DISM/PowerShell, boas práticas de GPO/WSUS e validação de mídia para ambientes sem Internet.

Índice

Visão geral do problema

Você tem um servidor Windows Server 2019 sem acesso à Internet e precisa habilitar o .NET Framework 3.5 (feature NetFx3). Ao tentar pelo assistente Add Roles and Features, informando a ISO do sistema em Specify an alternate source path, aparece o erro:

The request to add or remove features on the specified server failed.
A DISM session could not be opened. Error: 0x8004015.

Esse erro indica que o DISM (Deployment Image Servicing and Management) não conseguiu iniciar ou manter uma sessão estável para habilitar a feature. Na prática, quase sempre é reflexo de um ou mais fatores: caminho \sources\sxs incorreto ou inacessível, build da mídia diferente do sistema, pendência de reinicialização/atualizações, tentativa de baixar componentes da Internet (bloqueada) ou corrupção no repositório de componentes.

Resumo rápido (para resolver em minutos)

  1. Monte a ISO do Windows Server 2019 (mesma edição/idioma/build do servidor) e confirme a pasta D:\sources\sxs.
  2. Reinicie o servidor para limpar sessões pendentes do DISM/instalações incompletas.
  3. No Prompt de Comando (Admin), execute: dism /online /enable-feature /featurename:NetFx3 /All /Source:D:\sources\sxs /LimitAccess
  4. Se falhar, rode a sequência de reparo: dism /online /cleanup-image /scanhealth dism /online /cleanup-image /restorehealth sfc /scannow e tente a instalação novamente.

Por que o erro 0x8004015 acontece

  • Caminho SxS inválido/inacessível: a pasta \sources\sxs não existe, está num drive diferente (letra mudou) ou o usuário não tem permissão de leitura.
  • Mídia não correspondente: ISO de build diferente do Windows Server em execução (ex.: Cumulative Updates divergentes). O DISM recusa os binários.
  • Pendência de reinicialização ou atualização: instalações anteriores deixaram o sistema em estado pendente (Pending).
  • Políticas/WSUS: o servidor tenta buscar conteúdo de reparo na Internet (WU) mas não tem acesso, gerando falha ou bloqueio.
  • Corrupção do repositório de componentes: problemas no Component Store podem impedir a abertura/execução da sessão do DISM.

Pré‑requisitos e boas práticas

  • Executar tudo com privilégios elevados (Prompt de Comando/PowerShell “Executar como administrador”).
  • Usar a mesma mídia do sistema: edição, idioma e build equivalentes ao servidor (idealmente a ISO de instalação exata).
  • Montar a ISO no próprio servidor ou expor a pasta \sources\sxs via compartilhamento de rede com leitura garantida.
  • Evitar downloads externos em ambientes offline: use /LimitAccess e/ou configure GPO para fonte alternativa.
  • Registrar o que fez: anote comandos e resultados, e preserve logs (C:\Windows\Logs\DISM\DISM.log e C:\Windows\Logs\CBS\CBS.log).

Procedimento completo, do básico ao avançado

Validar a mídia e o caminho SxS

Depois de montar a ISO, confirme a existência e o acesso à pasta \sources\sxs (exemplo com a unidade D:):

dir D:\sources\sxs

Se estiver usando rede, teste o compartilhamento:

dir \\ServidorDeArquivos\WinServer2019\sources\sxs

Procure arquivos relacionados a NetFx3 na pasta:

dir D:\sources\sxs\netfx3 /b

Reiniciar para limpar sessões pendentes

Reinícios simples resolvem travamentos internos do DISM. Se você já tentou instalar, reinicie o servidor antes da nova tentativa.

Checar pendências e saúde do repositório

Execute o diagnóstico do DISM:

dism /online /cleanup-image /scanhealth

Se apontar problemas, tente o reparo usando a própria ISO como origem (em ambientes offline, isso evita a Internet):

dism /online /cleanup-image /restorehealth /Source:D:\sources\sxs /LimitAccess

Instalar o .NET 3.5 com DISM (modo offline)

Use o comando abaixo. O parâmetro /All habilita subcomponentes, e /LimitAccess impede tentativas de contato com a Internet/WSUS.

dism /online /enable-feature /featurename:NetFx3 /All /Source:D:\sources\sxs /LimitAccess

Verificar integridade de arquivos de sistema

Após o DISM, rode o Verificador de Arquivos de Sistema:

sfc /scannow

Alternativa via PowerShell

Se preferir PowerShell, o cmdlet abaixo é equivalente:

Install-WindowsFeature -Name NET-Framework-Features -Source D:\sources\sxs -IncludeAllSubFeature -Verbose

Confirmar a instalação

Cheque o status da feature:

dism /online /Get-Features /Format:Table | findstr /i NetFx3

Ou no PowerShell:

Get-WindowsFeature NET-Framework-Core

Ações e comandos recomendados (tabela rápida)

ObjetivoComando ou açãoDetalhes
Validar o caminho da mídiaVerificar D:\sources\sxs (ou equivalente)Erro comum quando o caminho está incorreto ou sem permissão de leitura.
Limpar sessões pendentes / reiniciarReiniciar o servidorReinícios simples resolvem travamentos de sessão do DISM.
Checar atualizações pendentesdism /online /cleanup-image /scanhealthConfirma que não há pendências que bloqueiem a instalação.
Instalar via linha de comandodism /online /enable-feature /featurename:NetFx3 /All /Source:D:\sources\sxs /LimitAccessEvita o assistente gráfico e dispensa Internet/WSUS.
Reparar componentes do DISMdism /online /cleanup-image /restorehealthCorrige corrupções que podem causar o 0x8004015.
Verificar integridade do sistemasfc /scannowGarante que arquivos de sistema essenciais não estejam corrompidos.
Alternativa via PowerShellInstall-WindowsFeature -Name NET-Framework-Features -Source D:\sources\sxsMétodo equivalente usando o cmdlet do Windows Server.

Configurar fonte alternativa pela Política de Grupo (GPO)

Em ambientes corporativos, padronize a origem offline para todos os servidores:

  1. Abra o Editor de Política de Grupo: gpedit.msc (ou configure a GPO no AD).
  2. Navegue até: Computer Configuration → Administrative Templates → System → Specify settings for optional component installation and component repair.
  3. Habilite a política e, em Alternate source file path, informe um caminho estável, por exemplo:
    • \\FileServer\WinSxS\WS2019\sources\sxs
    • ou D:\sources\sxs (se cada servidor montar sua própria ISO).
  4. Em ambientes sem Internet, marque a opção para não tentar obter conteúdo no Windows Update.
  5. Atualize as políticas e teste: gpupdate /force

WSUS, ISO virtual e outras práticas

  • WSUS: se houver WSUS, garanta que “Features on Demand” estejam autorizadas ou aplique a GPO anterior para direcionar sempre ao caminho offline.
  • ISO montada: preferencial em ambientes isolados. Monte a mídia de instalação em uma unidade virtual e use \sources\sxs como origem.
  • Rede dedicada: um compartilhamento interno com \sources\sxs de cada versão suportada simplifica a manutenção.

Como montar e identificar a unidade da ISO

PowerShell (Admin):

Mount-DiskImage -ImagePath "C:\ISO\WindowsServer2019.iso"
Get-Volume | Where-Object DriveType -eq 'CD-ROM'
Depois, quando terminar:
Dismount-DiskImage -ImagePath "C:\ISO\WindowsServer2019.iso"

O Get-Volume exibirá a letra da unidade do DVD virtual (por exemplo, D:).

Script PowerShell que localiza a pasta SxS e instala automaticamente

Use o script abaixo para encontrar automaticamente \sources\sxs (em unidades locais, DVD virtual ou caminhos de rede pré-definidos) e habilitar o NetFx3 com segurança.

# Executar no PowerShell (Admin)
$possiveisCaminhos = @()

DVD virtual / mídias com DriveType CD-ROM

$possiveisCaminhos += (Get-Volume | Where-Object DriveType -eq 'CD-ROM' | ForEach-Object { "$($_.DriveLetter):\sources\sxs" })

Caminhos locais comuns

$possiveisCaminhos += @('D:\sources\sxs','E:\sources\sxs','C:\ISO\WS2019\sources\sxs')

(Opcional) Compartilhamentos internos

$possiveisCaminhos += @('\FileServer\WS2019\sources\sxs')

$caminhoSxs = $possiveisCaminhos | Where-Object { Test-Path $_ } | Select-Object -First 1

if (-not $caminhoSxs) { throw "Pasta \sources\sxs não encontrada. Monte a ISO ou ajuste os caminhos." }

Write-Host "Usando origem: $caminhoSxs"
dism /online /enable-feature /featurename:NetFx3 /All /Source:$caminhoSxs /LimitAccess

Validação

dism /online /Get-Features /Format:Table | findstr /i NetFx3 

Diagnóstico pelos logs do DISM e CBS

Quando o erro persiste, investigue as entradas mais recentes dos logs:

  • C:\Windows\Logs\DISM\DISM.log
  • C:\Windows\Logs\CBS\CBS.log

Filtros úteis (PowerShell):

Select-String -Path 'C:\Windows\Logs\DISM\DISM.log' -Pattern 'Error|0x8004015|NetFx3' -CaseSensitive:$false | Select-Object -Last 50
Select-String -Path 'C:\Windows\Logs\CBS\CBS.log' -Pattern 'Error|Failed|NetFx3' -CaseSensitive:$false | Select-Object -Last 50

Se o log mencionar pending operations ou reboot required, reinicie e repita a instalação.

Cenários especiais que exigem atenção

Build/edição/idioma diferentes

O Windows Server 2019 é comumente identificado pelo build 17763.x. Se a ISO for de build muito diferente, a pasta \sources\sxs pode não conter binários compatíveis para o seu nível de cumulativos (UBR). Prefira a mídia original do seu ambiente ou uma ISO slipstream com os mesmos cumulativos aplicados.

Server Core vs Desktop Experience

Em Server Core, não há assistente gráfico — use DISM ou Install-WindowsFeature. Os comandos apresentados funcionam em ambas as edições.

Permissões e antivírus

Certifique-se de que a conta de instalação tenha leitura sobre a origem (rede/ISO) e verifique se soluções de segurança não estão bloqueando o acesso a \sources\sxs.

Erros relacionados e correções rápidas

CódigoMensagem típicaCausa provávelCorreção
0x8004015“A DISM session could not be opened”Sessão travada, origem inválida, pendência de rebootReinicie, valide \sources\sxs, use /LimitAccess, rode scanhealth/restorehealth
0x800F081F“The source files could not be found”Origem ausente/erradaApontar a pasta correta \sources\sxs e garantir build compatível
0x800F0906Falha ao baixar pela InternetSem Internet/WSUS bloqueandoForçar origem offline e /LimitAccess ou configurar GPO
0x800F0954Cliente tenta WSUS e falhaPolítica força WSUS sem conteúdoDirecionar a fonte via GPO/pasta SxS; não usar WU em offline

Checklist final de instalação

  • ISO correta (mesma edição/idioma/build) montada e \sources\sxs acessível.
  • Servidor reiniciado para limpar pendências.
  • dism /online /cleanup-image /scanhealth sem erros críticos.
  • Instalação com dism /enable-feature usando /Source e /LimitAccess.
  • Se necessário, /restorehealth + sfc /scannow concluídos com sucesso.
  • Validação com Get-WindowsFeature NET-Framework-Core ou dism /Get-Features.
  • GPO ajustada para fonte offline padronizada (opcional, recomendável em domínios).

Perguntas frequentes (FAQ)

Posso usar a pasta SxS de outro Windows (ex.: Windows 10)?

Não. Use a mesma família e build do Windows Server 2019. Misturar fontes costuma gerar erros como 0x800F081F ou falhas de manutenção.

Preciso estar conectado à Internet?

Não. Em ambientes offline, sempre aponte /Source:<caminho> e use /LimitAccess. Assim o DISM não tenta baixar nada.

O assistente gráfico falha; a linha de comando funciona?

Sim. O DISM/PowerShell geralmente contorna falhas do assistente e oferece mensagens de erro mais claras para troubleshooting.

Como confirmar se o servidor precisa reiniciar?

Verifique chaves de pendência ou mensagens do próprio DISM. Como prática, reinicie antes de uma nova tentativa caso tenha ocorrido falha anterior.

Conclusão

O erro DISM 0x8004015 ao instalar o .NET Framework 3.5 no Windows Server 2019 quase sempre se resolve com uma sequência disciplinada: validar o caminho \sources\sxs, limpar pendências com um reinício, forçar a origem offline (/Source + /LimitAccess) e, se necessário, reparar a imagem com scanhealth/restorehealth e sfc. Padronizar a fonte via GPO e, quando aplicável, servir a pasta SxS a partir de um compartilhamento interno reduz o retrabalho e elimina intermitências do assistente. Seguindo este guia, a instalação tende a ser previsível, reproduzível e rápida — mesmo em ambientes totalmente isolados da Internet.


Complementos úteis

  1. Versão da ISO – Utilize a mesma compilação (build) do Windows Server que está em execução; mídias de versão diferente podem causar falhas.
  2. Política de Grupo – Em ambientes corporativos, defina o Alternate source file path em Computer Configuration → Administrative Templates → System → Specify settings for optional component installation para que todos os servidores usem a mesma mídia offline.
  3. WSUS ou DVD virtual – Caso exista um WSUS interno com a feature, autorize o Feature on Demand ou monte o ISO da instalação em uma unidade virtual para simplificar o processo.
Índice