· Personalizando la estética de la instalación de Windows
Ahora que ya sabemos automatizar la instalación de Windows... hagámosla bonita, ¿no?, cambiemosle todas las "florituras" y colores .
En esta parte del tutorial aprenderemos a personalizar las imágenes que usa el instalador de Windows, y de esta manera lo pondré punto y final a la personalización de la instalación, ya llegaremos a lo verdaderamente interesante en los siguientes volumenes del tutorial .
Nota: Se aconseja un cierto nivel de conocimientos sobre la edición de imágenes BMP (Bitmap) y sus transparencias, y opcionalmente conocimientos de archivos ICO (Iconos).
Nota: Vuelvo a recordar que este tutorial está basado y orientado en una imagen ISO de Windows 8.1 x64.
· ¿Que herramientas necesitaremos?
Un editor de recursos, recomiendo la aplicación Restorator 2009, puero pueden usar Resource Hacker, Anolis Resourcer, o su herramienta favorita.
Un editor de imágenes, recomiendo la aplicación Photoshop, pero pueden usar Microsoft Paint , cualquier otro e incluso pueden descargar imágenes (válidas) de Internet.
Opcional: Un grabador de imágenes ISO para testear nuestra instalación personalizada, recomiendo la herramienta OSCDIMG que se encuentra ubicada en %WinKit%\oscdimg\oscdimg.exe
Opcional: Una máquina virtual para testear la ISO, recomiendo la aplicación VirtualBox.
4.1
· Ubicación de los recursos de imágenes de la instalación
Dentro del DVD de Windows hay 3 librerías que contienen imágenes Bitmap e Iconos:
· ...\Sources\spwizimg.dll
· ...\Sources\w32uiimg.dll
· ...\Sources\arunimg.dll
Y el archivo Bitmap ubicado en ...\Sources\Background.bmp
Aparte, los mismos archivos se encuentran dentro de la imagen Boot.wim en las mismas ubicaciones, y esos archivos dentro de la imagen son las que debemos modificar.
Dentro de la imagen Boot.wim además hay otro archivo Bitmap ubicado en ...\Windows\System32\Setup.bmp
Nota: Si queremos hacer una modificación muy básica entonces solo debemos tener en cuenta la librería spwizimg.dll
Este es el contenido de las 3 librerías:
Nota: Los números son el nombre del recurso.
· spwizimg.dll
Bitmaps:
· w32uiimg.dll
Bitmaps:
Iconos:
· arunimg.dll
Bitmaps:
Iconos:
4.2
· Identificando los recursos de imagen que utiliza el instalador
Estos son los nombres de algunos recursos Bitmap que se usan en la instalación de Windows, en el punto 3.1 del tutorial pueden enlazar el nombre del recurso para saber en que librería se encuentra.
4.3
· Modificando los recursos de imágenes
Pueden modificar los recursos de las librerías que se encuentran en el DVD de Windows, pero les recuerdo que los recursos que nos interesan modificar son los de las librerías que se encuentran dentro de la imagen Boot.wim (la cual ya expliqué como se puede montar en el punto 3.2 del tutorial), se encuentran en el índice de imagen 2.
En este punto la verdad es que no puedo ayudar mucho ni creo poder dar explicaciones útiles, es cosa tuya saber como editar una imagen y reemplazarla con un editor de recursos, si no sabes... ¿para que leiste hasta aquí?. ¡ ánimo !
4.3
· Automatizar la tarea de personalización de recursos de imágenes
...¿Te creiste que no iba a ayudar?
Al empezar este tutorial dije que iba a proporcionar todas mis herramientas y creaciones en todos los temas, así que si te parece algo complicado la edición de recursos entonces estás de suerte!
Voy a explicar una manera muy sencilla de automatizar todo este tutorial utilizando un Script Batch y un archivo de texto, pero antes que nada quiero comentarles que en este enlace pueden descargar todo lo necesario que voy a comentar, y un ejemplo completo con imagenes y PSD's, para los que no les guste leer instrucciones largas
Actualizado:
http://www.mediafire.com/download/ktzms7i09qt4n2b/wim+resource+replacer+0.2.rar
Estas son las instrucciones:
Por un lado deben descargar el editor de recursos Anolis Resourcer, ¿porque?, porque es con el que yo manejo de manera commandline
Lo pueden descargar aquí: http://anolis.codeplex.com/releases/view/32286
Por otro lado deben conocer las ubicaciones de las librerías que quieren modificar y/o archivos que quieren reemplazar, en el caso de las librerías deben conocer también los nombres de los recursos que quieren modificar (los tienen en el punto 4.1 del tutorial), y obviamente también deben tener las imagenes modificadas.
Conociendo y teniendo los archivos necesarios que acabo de mencionar, deben crear un archivo de texto delimitado por puntos y comas, estos archivos los parseará/procesará el script que luego les mostraré.
La sintaxis que deben usar para delimitar los recursos en el archivo de texto, para reemplazar archivos es:
Código:
Ruta relativa del archivo que va a ser reemplazado;Ruta relativao absoluta del archivo que se copiará
La sintaxis que deben usar para delimitar los recursos en el archivo de texto, para librerías de recursos de imágenes es:
Código:
Ruta relativa del recurso a modificar;Nombre del recurso;Ruta del recurso modificado
Nota: ¡ No se debe escribir la ruta absoluta del directorio montado !
Lean esta ayuda que escribí para entender la sintaxis del archivo de texto delimitado:
Citar
ResourceList Help - By Elektro
##############################
========================
To add or replace files:
========================
Syntax: OutFile;InFile
· Outfile:
Indicates the file that will be Created/Replaced.
Should be written as a relative mount filepath.
· InFile:
Indicates the file that will be copied to the OutFile.
Should be written as an absolute filepath.
Examples:
---------
Sources\Background.bmp;.\Resources\Background.bmp
Sources\Background.bmp;C:\Resources\Background.bmp
=====================
To replace resources:
=====================
Syntax: ResourceFile;ResourceName;InResource
· ResourceFile:
Indicates the dll file that will be opened to replace resources inside.
Should be written as a relative mount filepath.
· ResourceName:
Indicates the resource name that will be replaced inside the resource file.
· InResource:
Indicates the resource to copy inside the resource file.
Should be written as an absolute filepath.
Examples:
---------
Sources\spwizimg.dll;517;.\Resources\517.bmp
Sources\spwizimg.dll;517;C:\Resources\517.bmp
##############################
========================
To add or replace files:
========================
Syntax: OutFile;InFile
· Outfile:
Indicates the file that will be Created/Replaced.
Should be written as a relative mount filepath.
· InFile:
Indicates the file that will be copied to the OutFile.
Should be written as an absolute filepath.
Examples:
---------
Sources\Background.bmp;.\Resources\Background.bmp
Sources\Background.bmp;C:\Resources\Background.bmp
=====================
To replace resources:
=====================
Syntax: ResourceFile;ResourceName;InResource
· ResourceFile:
Indicates the dll file that will be opened to replace resources inside.
Should be written as a relative mount filepath.
· ResourceName:
Indicates the resource name that will be replaced inside the resource file.
· InResource:
Indicates the resource to copy inside the resource file.
Should be written as an absolute filepath.
Examples:
---------
Sources\spwizimg.dll;517;.\Resources\517.bmp
Sources\spwizimg.dll;517;C:\Resources\517.bmp
Esto es un ejemplo de un archivo delimitado escrito de forma correcta:
Resources.txt
Código:
Sources\Background.bmp;.\Resources\Background.bmp
Windows\System32\Setup.bmp;.\Resources\Setup.bmp
Sources\spwizimg.dll;405;.\Resources\405.bmp
Sources\spwizimg.dll;407;.\Resources\407.bmp
Sources\spwizimg.dll;408;.\Resources\408.bmp
Sources\spwizimg.dll;516;.\Resources\516.bmp
Sources\spwizimg.dll;517;.\Resources\517.bmp
Sources\w32uiimg.dll;207;.\Resources\207.bmp
A continuación, lo único que tienen que hacer es ejecutar este Script, el Script se encargará de montar la imagen, reemplazar archivos (si especificaron alguno) y/o reemplazar recursos de imagenes si especificaron alguno, después desmontará la imagen y listo.
Antes de poder automatizar esta tarea usando mi Script primero deben configurar las rutas de los valores WindowsImage, MountDir, Anolis, Dism, y ResourceList que se encuentran documentados en la cabecera del archivo.
WIM Resource Replacer.bat
Código
Mode Con Cols=150 Lines=50 REM ====== REM About: REM ====== :: Header Info. Echo+ Echo ----------------------------------------------------------------------------------------- Echo ----------------------------------------------------------------------------------------- Echo+ REM ==================== REM User defined values: REM ==================== :: User defined values. REM This value indicates whether the Windows Image should be mounted. REM True = 'DISM' will try to mount the 'WIM' image. REM False = 'DISM' will not try to mount the WIM image. REM Set this value to 'FALSE' if the 'WIM' image is already mounted in the specified mount directory, REM Otherwise, keep it as 'TRUE'. Set "MountImage=True" REM This value indicates whether the Windows Image should be unmounted at the end. REM True = 'DISM' will try to unmount the 'WIM' image. REM False = 'DISM' will not try to unmount the WIM image. REM Set this value to 'FALSE' if you want to keep the image mounted to make other changes, REM Otherwise, keep it as 'TRUE'. Set "UnmountImage=True" REM This value indicates the 'WIM' image to be mounted. REM This value indicates the Image Index of the 'WIM' image. Set "ImageIndex=2" REM This value indicates the directory where to mount the 'WIM' image. REM This value indicates the location of Anolis Resourcer 'Anolis.exe' file. REM This value indicates the textfile that contains the Recource files to replace. REM This value indicates the location of a custom 'DISM.exe' file if needed. REM Default location: REM "%SystemRoot%\System32\Dism.exe" REM This value indicates the location of the logfile that will record 'DISM' exceptions. REM This value indicates the logging-level of the 'DISM' process. REM 1 = Errors only REM 2 = Errors and warnings REM 3 = Errors, warnings, and informational REM 4 = All of the information listed previously, plus debug output Set /A "DismLogLevel=2" REM ===== REM Main: REM ===== Call :CheckErrors Call :CreateLog Call :CreateMountDir Call :Mount CLS Call :ParseResources Call :Unmount Echo+ Echo [i] Done! Pause&Exit REM ======== REM Methods: REM ======== :CreateLog :: Create the 'DISM' logfile with 'ANSI' encoding, :: this is necessary to record a non-default 'DISM' loglevel such as '1' or '2'. :: Record initial info. ( Echo+ Echo Automated DISM processing: Echo ========================== Echo+ Echo WIM Resource Replacer Echo+ Echo+ Echo+ Echo+ Echo+ Echo+ Echo =========================== )>"%DismLogfile%" :: Display initial info. Type "%DismLogfile%" Goto:EOF :CreateMountDir :: Create the mount directory. ( ) ) || ( Echo+ Echo [i] Ensure that you have Admin rights to create the directory. Echo+ Pause&Exit ) Goto:EOF :Mount :: Mounts the Windows Image into the mount directory. "%Dism%" /Mount-Image /ImageFile:"%WindowsImage%" /Index:"%ImageIndex%" /MountDir:"%MountDir%" /English /LogPath:"%DismLogfile%" /LogLevel:"%DismLogLevel%" || ( Echo+ Echo [i] Ensure that you have Admin rights to write inside the directory. Echo [i] Ensure that the directory is fully empty. Echo+ REM Try to unmount the failed image and discard changes. "%Dism%" /Unmount-WIM /Discard /MountDir:"%MountDir%" ) ) ) Goto:EOF :ParseResources ) Goto:EOF :Unmount :: Unmount the Windows Image commiting changes. "%Dism%" /Unmount-WIM /Commit /MountDir:"%MountDir%" /English /LogPath:"%DismLogfile%" /LogLevel:"%DismLogLevel%" ) Goto:EOF :TakeOwn Goto:EOF :CopyFile Goto:EOF ) Goto:EOF :ReplaceResource Goto:EOF ) Goto:EOF ) Start /W "Anolis" "%Anolis%" -op:upd -src:"%~f1" -type:Bitmap -name:"%~2" -lang:1033 -file:"%~f3") ) Start /W "Anolis" "%Anolis%" -op:upd -src:"%~f1" -type:Icon -name:"%~2" -lang:1033 -file:"%~f3") ) Goto:EOF REM ==================== REM File Error Controls: REM ==================== :CheckErrors :: WIM File Error-Check. Pause&Exit ) :: ResourceList File Error-Check. Pause&Exit ) :: DISM File Error-Check. Pause&Exit ) :: Anolis Resourcer File Error-Check. Pause&Exit ) Goto:EOF
4.4
· Obteniendo resultados
Una vez hayan montado la imagen Boot.wim para modificar los recursos de imágenes que queramos, deben desmontar la imagen WIM y guardar los cambios (lease el punto 3.3 del tutorial si no sabes hacerlo).
Nota: Si usaste mi Script para reemplazar recursos entonces no tienes porque desmontar nada.
Ya solo nos quedará generar la ISO y testearla en un DVD, ¡¡ aquí os muestro el resultado visual del ejemplo que hice para este tutorial !! :
¡ Les invito a postear sus modificaciones en este tema !