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.
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
Componente | Detalle |
---|---|
Medio coincidente | ISO o DVD con la misma edición, idioma y build de Windows Server 2019 instalada (incluidos los CUs). |
Permisos | Cuenta con privilegios de administrador local y acceso de lectura a la carpeta sources\sxs . |
Reinicios | Sin reinicios pendientes ni sesiones DISM activas en segundo plano. |
Método recomendado con DISM (sin conexión)
- Verificar reinicios pendientes
Ejecutashutdown /r /t 0
. Un reinicio simple puede liberar la sesión bloqueada. - 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. - 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.
- Confirmar la instalación
Finalizada la operación, comprueba con:dism /online /get-featureinfo /featurename:NetFx3
El estado debe aparecer comoEnabled
.
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 probable | Acció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 recientes | Slipstream de los CUs o usa una ISO más actual. |
Ruta UNC con credenciales distintas | Mapea 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.