Instalar .NET Framework 3.5 sin conexión en Windows Server 2019 (Error DISM 0x8004015)

Instalar .NET Framework 3.5 en un servidor sin conexión puede convertirse en un dolor de cabeza cuando DISM devuelve el código 0x8004015. A continuación encontrarás una guía completa para superar el error y activar la característica incluso en entornos aislados.

Índice

Contexto del error DISM 0x8004015

El código 0x8004015 indica que “no se pudo abrir una sesión DISM”. En la práctica significa que el componente de mantenimiento de imágenes de Windows (Deployment Image Servicing and Management) quedó bloqueado o no puede acceder a los binarios correctos. Suele ocurrir cuando:

  • Se intenta instalar la característica sin conexión a Windows Update.
  • La ISO montada no coincide con la compilación exacta del sistema operativo.
  • Hay reinicios pendientes o corrupción en la imagen.
  • Restricciones de antivirus, políticas o software de terceros interceptan dism.exe.

Por qué .NET Framework 3.5 requiere la carpeta sources\sxs

Desde Windows Server 2012, los binarios de .NET Framework 3.5 se almacenan “a petición” (Features on Demand). Para instalarlos sin Internet debes proporcionar manualmente los paquetes CAB situados en sources\sxs dentro del medio de instalación que corresponda a tu versión exacta de Windows Server 2019 (incluido el mismo nivel de parche o CU).

Requisitos previos imprescindibles

ComponenteDetalle
Medio coincidenteISO o DVD con la misma edición, idioma y build de Windows Server 2019 instalada (incluidos los CUs).
PermisosCuenta con privilegios de administrador local y acceso de lectura a la carpeta sources\sxs.
ReiniciosSin reinicios pendientes ni sesiones DISM activas en segundo plano.

Método recomendado con DISM (sin conexión)

  1. Verificar reinicios pendientes
    Ejecuta shutdown /r /t 0. Un reinicio simple puede liberar la sesión bloqueada.
  2. Comprobar la salud de la imagen
    DISM /online /cleanup-image /scanhealth Si se detecta corrupción, repárala con /restorehealth usando una fuente válida.
  3. Habilitar .NET 3.5 con fuente local
    DISM /online /enable-feature /featurename:NetFx3 /All ^ /Source:D:\sources\sxs /LimitAccess
    • /All añade subcomponentes (WCF HTTP Activation, etc.).
    • /LimitAccess impide que DISM intente consultar Windows Update.
  4. Confirmar la instalación
    Finalizada la operación, comprueba con:
    dism /online /get-featureinfo /featurename:NetFx3 El estado debe aparecer como Enabled.

Instalación vía PowerShell (alternativa)

Si prefieres mantener la consola unificada, PowerShell ofrece el cmdlet Install-WindowsFeature:

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

Internamente invoca DISM, por lo que se aplican las mismas reglas de coincidencia de medios.

Solución de problemas paso a paso

La sesión DISM no se abre

  • Detén cualquier actualización de Windows en curso (net stop wuauserv).
  • Asegúrate de que otro proceso DISM no esté lanzado (usa tasklist | findstr dism).

El parámetro /Source es rechazado

Causa probableAcción correctiva
Medio de edición diferente (Std vs Datacenter)Descarga la ISO que coincida exactamente con la edición instalada.
ISO sin integrar CUs recientesSlipstream de los CUs o usa una ISO más actual.
Ruta UNC con credenciales distintasMapea la unidad y especifica letra local en /Source.

Corrupción persistente en la imagen

Cuando /restorehealth necesita una fuente para reparar los paquetes dañados, puedes reutilizar el mismo directorio sources\sxs:

DISM /online /cleanup-image /restorehealth /source:D:\sources\sxs /limitaccess

Logs para diagnóstico fino

Revisa %windir%\Logs\DISM\dism.log. Filtra por “CBSEINVALID_PACKAGE” o “SxS” para localizar paquetes faltantes. Una búsqueda frecuente es:

findstr /i /c:"[CBS]" %windir%\Logs\DISM\dism.log > C:\Temp\dism_cbs.txt

Entornos con antivirus o EDR

Productos de seguridad corporativa pueden interceptar la carga dinámica de los archivos CAB. Aplica exclusiones temporales para dism.exe y la ruta de montaje ISO.

Casos especiales

Windows Server Core

La edición Server Core carece de la GUI Agregar roles y características, por lo que el enfoque con DISM o PowerShell es el único válido. El procedimiento es idéntico, pero se recomienda montar la ISO en C:\ISO para simplificar los scripts.

Imágenes offline (WIM/VHD)

Si preparas imágenes WIM o discos VHD para desplegar máquinas virtuales, habilita la característica antes de generalizarlas:

DISM /mount-image /imagefile:C:\Images\WS2019.wim /index:1 /mountdir:C:\Mount
DISM /image:C:\Mount /enable-feature /featurename:NetFx3 /All /Source:D:\sources\sxs
DISM /unmount-image /mountdir:C:\Mount /commit

Uso en clústeres y entornos críticos

En nodos de clúster de conmutación por error es vital evitar reinicios no planificados. Asegura el modo Drain del rol antes de iniciar la operación y confirma que PendingReboot=No tras la instalación.

Buenas prácticas para administradores

  • Mantén un repositorio interno con ISOs actualizadas y firmadas.
  • Genera scripts idempotentes que incluyan validaciones de versión ([Environment]::OSVersion.Version.Build).
  • Agrega pruebas de integridad a tu pipeline de CI/CD para plantillas de VM.
  • Documenta la salida de dism /get-features antes y después para auditorías.

Conclusión

El error DISM 0x8004015 puede resolverse de forma fiable siguiendo una metodología clara: confirmar la integridad de la imagen, utilizar un medio idéntico y ejecutar DISM/PowerShell con la opción /Source. Con ello, .NET Framework 3.5 queda disponible para aplicaciones heredadas sin comprometer la seguridad del entorno.

Índice