Ha pasado mucho tiempo desde que, en febrero de 2019, expliqué cómo instalar MDT 8456 con ADK for Windows 10, version 1809.

Durante estos años, dado que MDT únicamente soporta Windows 10 1809, ha sido necesario aplicar diferentes workarounds para que funcione con Windows 11 y los últimos Windows ADK de este sistema operativo.

En este artículo explicaré cómo instalar y usar MDT 8456 (Enero de 2019) con el último Windows ADK disponible a día de hoy, Windows ADK 24H2 10.1.26100.1 (Mayo de 2024).

Instalación de MDT

Descarga de instaladores

Para realizar esta instalación hay que descargar los siguientes instaladores:

Instalación de Windows ADK

  • Ejecutar adksetup.exe y seguir el asistente de instalación
  • Instalar en C:\Program Files (x86)\Windows Kits\10 marcando las opciones para:
    • No enviar datos de uso anónimos acerca de los Windows 10 Kits
    • Aceptar la licencia del producto
  • Seleccionar para instalar el siguiente componente imprescindible:
    • Deployment Tools (DISM, SIM, OSCDIMG, BCDBoot, etc.)

Opcionalmente, si se quisieran crear paquetes de aprovisionamiento, habría que instalar también los siguientes componentes:
- Imaging and Configuration Designer (ICD)
- Configuration Designer
- User State Migration Tool (USMT)

Instalación de WinPE add-on

  • Ejecutar adkwinpesetup.exe y seguir el asistente de instalación
  • Instalar en C:\Program Files (x86)\Windows Kits\10 marcando las opciones para:
    • No enviar datos de uso anónimos acerca de los Windows 10 Kits
    • Aceptar la licencia del producto
  • Seleccionar para instalar el siguiente componente:
    • Windows Preinstallation Environment (Windows PE)

Instalación del toolkit

  • Ejecutar MicrosoftDeploymentToolkit_x64.msi y seguir el asistente de instalación
    • Aceptar los términos de licencia
  • Seleccionar para instalar todos los componentes:
    • Microsoft Deployment Toolkit
    • Documents
    • Tools and Templates
  • Instalar en C:\Program Files\Microsoft Deployment Toolkit
  • No participar en el CEIP (Customer Experience Inprovement Program)

Patching de MDT

Para solucionar algunos problemas introducidos por los diferentes Windows ADK posteriores a MDT hay que modificar la instalación de MDT.

Actualizar Microsoft.BDD.Utility.dll

A partir del ADK for Windows 10, version 2004 es necesario actualizar el fichero Microsoft.BDD.Utility.dll para que MDT pueda desplegar una imagen de Windows 10 (o ahora Windows 11) en ordenadores que estén configurados en modo BIOS en lugar de UEFI.

Si se utiliza la versión original, se producirá un error 0x80004005 como el mostrado a continuación:

Error 0x80004005

Para actualizar la instalación de MDT hay que hacer lo siguiente:

  • Descargar el fichero MDT_KB4564442.exe
  • Descomprimirlo en un directorio temporal (p.ej. C:\ADM\Setups\MDT_KB456442)
  • Cerrar la aplicación “Deployment Workbench” si estuviera abierta
  • Hacer una copia de seguridad de los 2 ficheros originales (hay una versión x86 y otra x64)
    • C:\Program Files\Microsoft Deployment Toolkit\Templates\Distribution\Tools\x86\Microsoft.BDD.Utility.dll
    • C:\Program Files\Microsoft Deployment Toolkit\Templates\Distribution\Tools\x64\Microsoft.BDD.Utility.dll
  • Copiar los 2 nuevos ficheros encima de los ficheros originales
  • Copiar los 2 nuevos ficheros encima de los ficheros originales de cada uno de los deployment shares que tengamos
    • C:\DeploymentShare\Tools\x86\Microsoft.BDD.Utility.dll
    • C:\DeploymentShare\Tools\x64\Microsoft.BDD.Utility.dll
  • Ejecutar la aplicación “Deployment Workbench
  • Regenerar completamente la boot image de cada deployment share usando la opción Update Deployment Share

Las versiones originales del fichero Microsoft.BDD.Utility.dll y sus nuevas versiones se detallan en la siguiente tabla:

Fichero Plataforma Versión original Versión KB4564442
Microsoft.BDD.Utility.dll x86 6.3.8456.1000 6.3.8456.1001
Microsoft.BDD.Utility.dll x64 6.3.8456.1000 6.3.8456.1001

Agregar soporte para scripts HTA

Con Windows ADK 24H2 10.1.26100.1 (May 2024) ya no es necesario aplicar este workaround.

En el ADK for Windows 11, version 22H2 se ha cambiado el default legacy script engine y las aplicaciones HTA han dejado de funcionar mostrando el mensaje Script Error - An error has occurred in the script on this page:

Fix HTA

El workaround para que estas aplicaciones, basadas en MSHTML, vuelvan a funcionar consiste en añadir la siguiente clave al registro del entorno Windows PE:

reg.exe add "HKLM\Software\Microsoft\Internet Explorer\Main" /t REG_DWORD /v JscriptReplacement /d 0 /f

El procedimiento para hacerlo es el siguiente:

  • Hacer una copia de seguridad del fichero C:\Program Files\Microsoft Deployment Toolkit\Templates\Unattend_PE_x64.xml
  • Reemplazar el contenido de ese fichero por el siguiente:
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
            <Display>
                <ColorDepth>32</ColorDepth>
                <HorizontalResolution>1024</HorizontalResolution>
                <RefreshRate>60</RefreshRate>
                <VerticalResolution>768</VerticalResolution>
            </Display>
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Description>Fix HTA scripts error Windows 11 ADK 22H2</Description>
                    <Order>1</Order>
                    <Path>reg.exe add "HKLM\Software\Microsoft\Internet Explorer\Main" /t REG_DWORD /v JscriptReplacement /d 0 /f</Path>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Description>Lite Touch PE</Description>
                    <Order>2</Order>
                    <Path>wscript.exe X:\Deploy\Scripts\LiteTouch.wsf</Path>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
    </settings>
</unattend>
  • Regenerar completamente la boot image de cada deployment share usando la opción Update Deployment Share

Patching de ADK

Para solucionar algunos problemas introducidos por los diferentes Windows ADK posteriores a MDT hay que modificar la instalación de Windows ADK.

Agregar Windows PE x86

A partir del ADK for Windows 11, version 22H2 no se incluyen los componentes de 32-bits de Windows PE (WinPE_OCs).

Esto hace que, al acceder a la pestaña Windows PE de un Deployment Share se produzca un error MMC has detected an error in a snap-in and will unload it debido a una excepción System.IO.DirectoryNotFoundException:

MMC Crash

El mensaje de error Could not find a part of the path 'C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs' es debido a que no existe el directorio con los componentes Windows PE de 32-bits.

El workaround consiste en crear el directorio C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs vacío.

Si no se necesitan crear boot images de 32-bits no es necesario hacer nada más ya que MDT únicamente comprueba la existencia de ese directorio al acceder a la pestaña Windows PE.

Si se quisiera crear una boot image de 32-bits (aunque ya no estén soportadas por Microsoft) es necesario descargar la última versión del ADK que incluía los componentes Windows PE de 32-bits:

A continuación, se pueden instalar en una máquina temporal y copiar el directorio que contiene los componentes Windows PE de 32-bits usando un script similar al siguiente:

mkdir D:\ADK_WinPE_x86\x86
robocopy "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86" D:\ADK_WinPE_x86\x86 /mir

Finalmente, se copia este directorio a la máquina donde se haya instalado Windows ADK 24H2 y se agregan al mismo usando un script similar al siguiente:

mkdir "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86"
robocopy D:\ADK_WinPE_x86\x86 "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86"  /mir

Si este procedimiento se ha realizado correctamente, se podrá acceder, sin que se cierre la MMC, a la pestaña Windows PE de las propiedades de un Deployment Share.

Agregar soporte para VBScript

Con Windows ADK 24H2 10.1.26100.1 (May 2024) ya no es necesario aplicar este workaround.

Windows ADK 10.1.25398.1 (September 2023) no incluye soporte para VBScript por lo que cualquier script de MDT, como por ejemplo LiteTouch.wsf no se puede ejecutar correctamente:

Missing VBScript

El workaround consiste en obtener los VBScript FOD (Feature On Demand) desde un Windows 11 23H2 (Build 25398) para añadirlos a los componentes Windows PE de Windows ADK 24H2.

Mi script GetVBScriptFOD.ps1 permite obtener fácilmente los ficheros que contienen la característica bajo demanda VBScript:

Microsoft-Windows-VBSCRIPT-FoD-Package~31bf3856ad364e35~amd64~~.cab
Microsoft-Windows-VBSCRIPT-FoD-Package~31bf3856ad364e35~wow64~~.cab
Microsoft-Windows-VBSCRIPT-FoD-Package~31bf3856ad364e35~amd64~en-us~.cab
Microsoft-Windows-VBSCRIPT-FoD-Package~31bf3856ad364e35~wow64~en-us~.cab

Una vez obtenidos, únicamente es necesario copiarlos en el directorio WinPE_OCs del ADK correspondiente a cada lenguaje (los dos primeros son neutros y los dos segundos corresponden a en-us):

C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\
   Microsoft-Windows-VBSCRIPT-FoD-Package~31bf3856ad364e35~amd64~~.cab
   Microsoft-Windows-VBSCRIPT-FoD-Package~31bf3856ad364e35~wow64~~.cab

C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\
   Microsoft-Windows-VBSCRIPT-FoD-Package~31bf3856ad364e35~amd64~en-us~.cab
   Microsoft-Windows-VBSCRIPT-FoD-Package~31bf3856ad364e35~wow64~en-us~.cab

Configuración y uso de MDT

En este artículo no detallaré como configurar y usar MDT ya que el artículo que escribí cuando instalé MDT 8456 con ADK for Windows 10, version 1809 sigue siendo válido a día de hoy.

Los pasos principales para configurar y usar Microsoft Deployment Toolkit son los siguientes:

  • Crear un Deployment Share y protegerlo a nivel de ACLs y compartición SMB
  • Importar los sistemas operativos que se quieran desplegar
  • Agregar paquetes con actualizaciones o lenguajes (no es necesario si se utiliza OSDBuilder)
  • Agregar aplicaciones que se instalarán después de desplegar el SO (por ejemplo, los runtime de Visual C++)
  • Crear una secuencia de tareas (task sequence) con los pasos que se quieran realizar durante el despliegue
  • Modificar los ficheros Bootstrap.ini y CustomSettings.ini para configurar las reglas del despliegue (¿hay que capturar o realizar un sysprep al final del proceso?, ¿hay que unir el equipo a un dominio?, etc.)
  • Configurar las opciones de Windows PE para definir qué arquitectura tendrá la imagen de arranque (boot image), qué controladores se añadirán, etc.
  • Actualizar el Deployment Share para regenerar la boot image
  • Usar esta boot image en una máquina virtual o física para desplegar el sistema operativo

Referencias

Historial de cambios

  • 2024-10-08: Documento inicial
  • 2024-10-09: Documentar workarounds