Integrar Temas personalizados en imagen de Windows 7 con Microsoft Deployment Toolkit 2010 Update 1

Hola a todos,

Como seguramente muchos se han dado cuenta u otros lo pueden estar viviendo (Con todo lo que implica) que Windows 7 está llegando y hoy por hoy empiezan los procesos Piloto y posterior implementación del sistema a nivel de la organización.

Por supuesto la primera y gran preocupación es la Compatibilidad de aplicaciones pero menos mal para todos nosotros, hay muchos caminos que van desde evaluar el comportamiento de la aplicación hasta la Virtualización.

Una vez superado esto podemos ahora preocuparnos por la forma en cómo desplegaremos Windows 7 y cúal es el mejor camino, aquí en el Blog ya hemos visto varios caminos (¡Quedan faltando muchos!) pero hoy específicamente nos enfocaremos a algo tal vez básico pero que puede representar una forma útil de estandarizar la visualización de los perfiles desplegados.

Windows 7 incluyó una característica muy particular con respecto a la personalización y es que ahora nosotros podemos crear nuestros propios Temas e implementarlos sea en nuestro equipo o incluso compartirlos desde la ventana de Personalización en el Panel de Control. Estos temas al quedar en un solo paquete fácilmente se pueden instalar en otro Equipo Windows 7 con solo ejecutarlo.

Lo que haremos será aprovechar esta función para integrar un tema personalizado dentro de una imagen Maestra de Windows 7 utilizando nuestro famoso Microsoft Deployment Toolkit 2010 Update 1 (MDT), así cuando implementemos además de las aplicaciones y configuraciones (Que MDT nos entrega), podremos tener nuestro propio tema =)

Lo que necesitamos:

– Servidor Windows Server 2008, 2008 R2 ó Windows 7 con Microsoft Deployment Toolkit instalado. Si no tienen MDT, pueden descargarlo desde aquí:
http://www.microsoft.com/downloads/en/details.aspx?familyid=3bd8561f-77ac-4400-a0c1-fe871c461a89&displaylang=en

– Los archivos de instalación de Windows 7, si todavía no lo tienen, pueden bajar un trial de 90 días para Windows 7 Enterprise desde aquí:
http://technet.microsoft.com/evalcenter/cc442495.aspx

– Archivo .themepack, se puede crear desde el panel de Personalización o bien pueden descargar temas personalizados de alguna página o de la web directa de Microsoft:
http://windows.microsoft.com/es-XL/windows/downloads/personalize/themes

¡Empezemos!

Lo primero que hacemos siempre es desde MDT crear un recurso compartido cuando recien estamos empezando, y dentro de este recurso hay otra serie de recursos destinanos a Aplicaciones, Sistemas, actualizaciones, scripts, etc.

Ya hemos visto algunos, pero hoy nos centraremos en una de las carpetas que tal vez poco usamos pero que le sacaremos provecho y es la de $OEM$

Para este artículo que el Recurso de implementación lo dejé con el nombre predeterminado, y en otra partición, la ubicación sería: D:DeploymentShare$OEM$

Esta carpeta $OEM$ existe y se utilizaba incluso en las implementaciones de Windows XP, y básicamente es un repositorio donde podremos copiar contenido adicional que necesitemos que tenga Windows (Para este caso el tema!).

Hay dos carpetas además de estas que podremos crear para referenciar directorios importantes:

$$: Al crear esta carpeta estamos asegurándonos de que todo el contenido que copiemos allí, o subcarpetas que creemos se ubiquen en directorio de Windows, normalmente C:Windows.

Si nosotros queremos que nuestro archivo de Tema se ubique en C:WindowsPerThemeTema.themepack el directorio dentro del DeploymentShare quedaría: $OEM$$$PerThemeTema.themepack

Básicamente es porque esto hace una réplica de todas las carpetas ubicadas en %SystemRoot%

$1: Trabaja exactamente igual que la anterior con excepción de que creando esta carpeta nos estaríamos ubicando en la Unidad del sistema operativo, por lo general en C:

Para este artículo, crearemos la carpeta DefaultTheme en el directorio C: por lo que el arbol quedaría: $OEM$$1DefaultThemeTema.themepack

image

*Nota: Cada uno puede variar como desee dentro de estas carpetas ya que como ven se pueden crear otras, o inclusive las dos, lo importante será tener en cuenta el directorio exacto donde quedará el Tema para poderlo referenciar y que aplique.

Configurando Secuencia de Tareas en MDT

Ya tenemos nuestro tema en el directorio específico pero así lo unico que estamos asegurando es que quede copiado cuando se haga la instalación de Windows, sin embargo como no estamos referenciando el tema predeterminado por el Archivo de autorespuesta (No he sido capaz!) tendremos que decirle a la Secuencia de tareas explícitamente dónde está el tema y que lo ejecute al terminar todo el proceso.

En el Equipo técnico donde tengamos instalado MDT, abrimos el Deployment Workbench haciendo clic en Inicio, Todos los programas, Microsoft Deployment Toolkit, Deployment Workbench (Si es en 7, se debe hacer clic derecho y “Ejecutar como administrador”).

Dentro del Deployment Workbench debemos modificar o crear la secuencia de tareas para integrarle la referencia al tema, para este artículo será con una básica y sin mayores personalizaciones.

Recordemos que para crear una Secuencia de tareas hacemos clic derecho sobre el Nodo Task Sequences y seleccionamos New Task sequence:

image

Se abriá el asistente para la creación de una nueva secuencia de tareas en el que básicamente debemos especificar un ID propio para la secuencia, un nombre, un sistema operativo y algunas configuraciones básicas como nombre de usuario registrado, clave de administrador, serial, sistema operativo a instalar, etc.

*Nota: No entro en detalle paso a paso para no repetir lo de artículos anteriores, al final de este post dejo algunos enlaces donde pueden seguir todo el procedimiento en este mismo Blog.

Para este artículo, mi secuencia de tareas la he llamado “Windows 7 PRO ES”.

Una vez creada, accedemos a las propiedades de la misma haciendo doble clic o bien clic derecho y seleccionando Properties:

image

En la ventana de Propiedades de la secuencia de tareas, nos pasamos a la pestaña de Task Sequence. Aquí es de donde la Secuencia de tareas recibe el orden de instalación y de tareas que se realizan durante todo el despliegue del sistema, aplicaciones, etc.

Lo que haremos será agregar algunos comandos más al final de toda la instalación para apuntar al Tema agregado en los pasos anteriores.

Para esto, dentro de esta pestaña de Task Sequence hacemos clic en el botón Add, menú General y clic en Run Command Line:

image

Debemos asegurarnos de que el Nodo creado quede como último paso (Para estar seguros también de que se ejecutará cuando el tema ya esté copiado en C:), para esto con el botón de “Down” lo ubicamos después del último nodo que es “Restore Groups”.

A continuación nos paramos sobre el seleccionándolo y en las propiedades del mismo debemos modificar el Nombre que queramos que se visualize (No importa si se deja el predeterminado) pero más importante la línea de comandos (Command Line) ya que es donde debemos indicarle el directorio exacto donde está el tema para que vaya y lo ejecute.

Para este artículo que el Tema está dentro de $OEM$$1DefaultThemeTema.themepack, el comando sería: C:DefaultThemeTema.themepack

image

Hacemos clic en el botón Apply y OK para guardar los cambios.

¡Listo! Ya está también referenciado el tema que se utilizará (Recordemos llamar el tema exactamente igual a como lo estamos buscando en la ruta), ahora el siguiente paso es Actualizar el Recurso compartido de implementación (Deployment Share) para que se apliquen los cambios en el Windows PE que crea y se pueda desplegar en cualquier equipo.

Para esto hacemos clic derecho sobre el nodo de Deployment Shares y seleccionamos Update Deployment Share:

image

En la ventana de Update Deployment Share seleccionamos Optimize the boot image updating process, clic en Next, Next y Finish para que actualice el Deployment Share:

image

Una vez terminado, buscamos el Windows PE dentro de la carpeta Boot del DeploymentShare con el nombre LiteTouchPE_x86.iso ó LiteTouchPE_x64.iso de acuerdo a la arquitectura que estemos desplegando y con esa imagen arrancamos el equipo de referencia donde haremos la instalación.

*Nota: Como se crea un .WIM también lo podríamos inicializar desde un WDS, para este artículo que nos estamos centrando sólo en aplicar el tema lo haremos manualmente pero es importante que los dos equipos siempre estén en la misma red para que el Equipo de referencia se pueda pegar correctamente al Equipo técnico.

De a cuerdo a si automatizamos o no la instalación nos puede pedir las credenciales y otras configuraciones y, si todo sale bien, después de terminada la instalación del sistema operativo se debería aplicar el tema al ejecutar la línea de comandos:

image

*Nota: “Algo” es el nombre que le puse al tema a la hora de crearlo dentro de Windows 7.

Como ven, es algo sencillo y tal vez de poca importancia pero si vamos a implementar 7 ¡Que sea como nos gusta que se vea! =)

Si de pronto es primera vez que están utilizando MDT, los invito a ver este artículo de configuración inicial de Microsoft Deployment Toolkit que hice para el Centro de Estudiantes Microsoft:
http://centrodeestudiantesmicrosoft.wordpress.com/2011/05/06/el-primer-paso-del-paso-a-paso-deployment-de-windows-7-y-compatibilidad/

Además de esto, el Webcast donde explico esto y cómo realizar el primer despliegue con MDT:
https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032476336&Culture=es-AR

Aquí en el Blog pueden ver otro tipo de artículos realizando varias tareas con MDT.

Espero les sea de utilidad.

Saludos,

Checho

Lanzando mi primera aplicación utilizando la API de Windows destinada a reparar asociación de Carpetas y Directorios: FixAss®

image

Hola a todos,

Desde hace un tiempo me ha dado bastante curiosidad por empezar a conocer sobre este fantástico mundo de Windows Internals y a partir de su gran libro empecé a investigar y a utilizar las herramientas de Sysinternals que, afortunádamente me han traido aprendizaje y muchísima ayuda con varios problemas de Windows que para mi suerte puedo ver y seguir en los Foros de Microsoft TechNet y Answers.

Uno de los problemas más comunes que pude encontrar solución gracias  Process Monitor específicamente es el que está relacionado a la Asociación de Carpetas y Directorios de Windows que, al perderse o dañarse generan el siguiente mensaje de error:

image

“Este archivo no tiene ningun programa asociado para ejecutar esta acción. Por favor instale el programa o si lo tiene cree una asociación en el panel de control de programas predeterminados”

Este problema está documentado aquí en el blog en un Artículo destinado para él en el que además pongo a disposición los archivos de Registro para su solución.

Decidí empezar a entrar un poco más en WinInternals interactuando y empezando a conocer sobre la API de Windows y las funciones para el Registro existentes y qué mejor forma que hacer un desarrollo?

Por tanto aproveché el problema descrito anteriormente y creé FixAss®, una miniaplicación destinada a solucionar el problema de Asociación de Carpetas y Directorios automáticamente al ser ejecutada.

¿Cómo funciona FixAss®?

Es una miniaplicación desarrollada en Visual C++ que hace uso de las funciones para trabajar con el Registro RegCreateKeyEx y RegSetValueEx de la API de Win32

FixAss® utiliza la función de RegCreateKeyEx para generar todas las llaves y subllaves de Registros que representan el trabajo y la asociación de Carpetas y Directorios de Windows en las rama de HKEY_CLASSES_ROOTFolder y HKEY_CLASSES_ROOTDirectory mientras que la función RegSetValueEx establece sus respectivas claves y valores predeterminados.

Siempre se sobreescribirán los valores y llaves actuales por lo que podría reparar el daño de asociación en cualquier llave o clave implicada.

Como se debe escribir sobre una rama de Registro que requiere privilegios, FixAss® tiene un Manifiesto embebido para solicitar la elevación de privilegios al momento de ejecutarlo con UAC activado:

image

Al aceptar, se elevará el token y se escribirán las claves y llaves necesarias y a continuación se mostrará una pequeña ventana que confirma la operación realizada:

image

Descarga

La descarga de FixAss® es completamente gratuita y la pueden hacer desde aquí:

*Nota: Deben descargar y descomprimir antes de poder ejecutar.

*Importante:
La aplicación está en su versión 1.0, y puede sufrir cambios dependiendo del funcionamiento que tenga con las personas que intenten reparar el problema ejecutándola.

Estará disponible también en el Artículo orginal del problema para los que deseen bajarla o quieran seguir ejecutando las llaves de registro manualmente.

Quiero agradecer especialmente a Daniel Martín (MVP) por toda la ayuda que me brindó, y además agradezco y son bienvenidos todos los comentarios y retroalimentación que me puedan entregar! =)

Saludos,

Checho