Automatización de Windows Upgrade con unattend.xml

Actualizar Windows no es solo instalar un parche; a veces, necesitas automatizar partes críticas del proceso para ahorrar tiempo y asegurar que tu entorno quede exactamente como lo deseas. Sin embargo, hay una trampa común: mucha gente asume que dejar el archivo `unattend.xml` en la raíz de su disco es suficiente para que Windows lo lea automáticamente durante un upgrade.

Ilustración dividida con un sistema Windows actualizándose y un archivo XML siendo procesado.
La interacción entre el proceso de upgrade y el archivo unattend.xml.

En realidad, el comportamiento del instalador cambia drásticamente dependiendo de si estás haciendo una instalación limpia desde cero o una actualización inplace. Si confías demasiado en la autodetección, es probable que el sistema ignore tu archivo por completo, especialmente porque Microsoft limita deliberadamente las capacidades de automatización durante los upgrades para proteger los datos existentes.

Configuración correcta del archivo y ejecución

Para empezar, hay dos requisitos básicos. Primero, el nombre del archivo debe ser exactamente `unattend.xml`. Segundo, en lugar de depender de que Windows encuentre tu archivo por arte de magia, lo más seguro es lanzar el instalador con una instrucción explícita.

Ejecutar la línea de comandos adecuada le indica al sistema directamente dónde buscar la configuración:

setup.exe /unattend:D:unattend.xml

Esto evita depender de la autodetección, que puede fallar dependiendo de si usaste una ISO montada, un USB o el propio ejecutable de Windows.

Qué secciones funcionan en un upgrade

Aquí está la parte más importante: no todas las secciones del XML tienen el mismo peso durante una actualización. Microsoft protege la instalación existente, lo que significa que ciertas configuraciones profundas simplemente no se aplican o son ignoradas.

Por ejemplo, tareas como el particionado de discos (`DiskConfiguration`), el borrado de datos o cambios en la edición del sistema operativo generalmente se saltan durante un upgrade. Sin embargo, otras áreas sí pueden ser automatizadas exitosamente. Secciones como la aceptación de licencias, las opciones regionales y ciertas configuraciones de usuario suelen funcionar bien.

Si intentas hacer cambios demasiado agresivos o profundas en una actualización inplace, es probable que el sistema simplemente ignore esos bloques sin fallar ni avisarte, lo cual puede ser bastante frustrante al final.

Archivo de log de sistema mostrando mensajes de éxito en la carga del archivo XML.
Visualización de los logs de Windows para verificar si el unattend fue leído correctamente.

Cómo depurar si Windows ignora tu XML

Si sientes que algo no funciona como esperabas, o sospechas que el instalador está ignorando partes de tu archivo, la clave es revisar los logs del sistema. Puedes verificar esto directamente en la carpeta `C:WindowsPanther`. Específicamente, debes buscar archivos como `setupact.log` y `setuperr.log`. Estos registros suelen contener líneas claras indicando si el archivo fue cargado exitosamente o si hubo errores de sintaxis.

Además, vale la pena revisar la carpeta `C:WindowsPantherUnattend`, ya que el instalador suele copiar allí una versión procesada del archivo para su referencia. Si encuentras errores XML en estos archivos, sabrás exactamente qué está fallando antes de perder tiempo con una instalación manual.

En resumen, automatizar un upgrade requiere precisión, conocimiento de las limitaciones del sistema y la voluntad de revisar los logs si algo no va como se espera.