Exportar e Importar asociación de aplicaciones en Windows 8

1537_Win8Logo_01_008485DD

Hola a todos,

Ya hemos tocado aquí varias características notables del nuevo Windows 8, algunas enfocadas más a usuario final, y otras a Profesionales de tecnología. Sin embargo, a partir de ahora, empezaremos a ver algunas cosas interesantes con respecto a la implementación, solución de problemas, y cuando se pueda, un poco de Internals en todas las categorías.
El post de hoy está dedicado a un tema que, si bien no era de notarse mucho en versiones anteriores como Windows 7, estaba causando problemas bastante frecuentes, y se ha mejorado de una manera muy positiva en Windows 8.

Windows internamente, cada que instalamos una nueva aplicación, necesita saber qué tipo de extensiones de los archivos que podemos traer, o crear, se deben asociar con las que la aplicación registró, a esto se le llama: Asociación de aplicaciones.

*Nota: Existen varios tipos de asociaciones en Windows, como las de Los Directorios y Carpetas.

Ya hace un poco más de un año, publiqué aquí uno de los problemas más comunes que tenía Windows 7 con respecto a las asociaciones, y es que fácilmente referenciaba nuestros accesos directos con alguna otra aplicación; Windows 8 tomó nota de esto, y ahora, a pesar de que las instalaciones siguen asociando las diferentes extensiones de las aplicaciones, ya no se abre de forma predeterminada, es decir, sin importar qué software instalemos, siempre seremos nosotros los de la última decisión de cuál debe ser el que se quede con la extensión del archivo o aplicación, de hecho, al finalizar las nuevas instalaciones, Windows 8 nos notificará con un mensaje similar a este:

As1

Esto es sin dunda la solución al problema en Windows 7, pero los usuarios se pueden cansar de estar asociando por cada aplicación, ya que esto era un trabajo que no se debía hacer en versiones anteriores; sin embargo, Windows 8 afortunadamente tiene una serie de asociaciones predeterminadas, por lo que al instalar, ya sabe con qué aplicación debe abrir diferentes tipos de extensiones como el .PDF o el .ZIP. En escenarios de implementación, o como en este caso, para nosotros como usuarios finales, podremos Exportar esta lista predeterminada de una instalación, y después Importarlas en otro equipo, para que cada nuevo usuario, ya sepa cómo debe abrir sus extensiones, incluso antes de que la determinada aplicación se le instale.

*Importante: Lo que haremos, es mucho más eficas cuando se hace Ingeniería de Imagen, es decir, cuando se trabaja sobre una imagen sin conexión (Offline), ya que nos aseguramos que se mantengan estos cambios para todos los usuarios, inclusive desde la instalación de Windows. En este post, trabajaremos sobre una imagen con conexión (Online).

¿Qué necesitamos?

– Un equipo donde instalemos todas las aplicaciones que normalmente asociamos a nuestras extensiones, donde configuraremos y exportaremos el archivo .XML que tendrá todas las asociaciones.

– Un equipo donde podamos Importar el archivo .XML con todas las asociaciones, para luego instalarle las aplicaciones y probar el funcionamiento en los nuevos usuarios.

*Nota: El proceso se puede hacer en un solo equipo, donde desde un usuario se configuran y se exporta el XML, y se importa en otro usuario diferente.

Estableciendo asociación de aplicaciones

Lo primero que debemos hacer, desde uno de los equipos, es instalar todas las aplicaciones que referenciar, y posteriormente asociarlas a las diferentes extensiones; como Windows 8 ya no lo hace de forma predeterminada, es necesario utilizar la ventana de Asociación de archivos o protocolos.

Para este artículo, me enfocaré con una sola extensión que será: .ZIP, y la aplicación que en mi caso quiero remplazar por el Explorador de Windows, será WinRAR.
Abrimos la Pantalla de Inicio y buscamos por Programas predeterminados, lo ejecutamos, y posteriormente hacemos clic en Asociar un tipo de archivo o protocolo con un determinado programa, buscamos la extensión (En este caso .ZIP) y finalmente, clic en el botón Cambiar programa para seleccionar el programa instalado:

Ass

*Nota: Debemos repetir este proceso para cada extensión, y asociar la aplicación que deseamos sea predeterminada en el próximo equipo.

Exportando asociación de archivos y aplicaciones

Una vez hayamos terminado los pasos anteriores para todas las aplicaciones, debemos proceder a exportar las respectivas asociaciones, para esto, utilizaremos la herramienta de DISM (Deployment Image Servicing and Management), que como lo hemos comentado en gran cantidad de artículos, funciona básicamente para hacer mantenimiento a nuestras imágenes offline y online, aunque ahora introdujo para Windows 8 nuevas funcionalidades como esta, y otras más potentes que remplazarán a ImageX.

Desde la Pantalla de Inicio, abrimos un Símbolo del sistema con privilegios elevados (Clic derecho, Ejecutar como administrador), y ejecutamos:

Dism /Online /Export-DefaultAppAssociations:<RutaXML>MiNombre.xml

Donde <RutaXML> es el directorio en el que quiero guardar el archivo XML con toda la configuración respectiva de asociaciones, y “MiNombre.xml” es como deseo llamar al archivo, por su puesto con la extensión requerida por el comando.

Para este artículo, lo guardaré en la unidad “C:”, y lo llamaré: MyApps.xml, por lo que todo el comando sería:

Dism /Online /Export-DefaultAppAssociations:C:MyApps.xml

Apps

Si abrimos el archivo con un editor de texto como el Bloc de Notas, podremos ver que al final aparecerá la asociación referenciando a las aplicaciones que hayamos indicado, por ejemplo, para el .ZIP:

image

Este archivo lo tenemos que pasar ahora al equipo donde predeterminaremos las diferentes extensiones para las mismas aplicaciones.

Importando asociación de archivos y aplicaciones

En el segundo equipo, copiamos el XML que creamos anteriormente en una ubicación sencilla de acceder (Por ejemplo, en una unidad), abrimos nuevamente el Símbolo del sistema con privilegios elevados y ejecutamos:

Dism /Online /Import-DefaultAppAssociations:<RutaXML>:MiNombre.xml

Donde <RutaXML> es el directorio en el que quiero guardar el archivo XML con toda la configuración respectiva de asociaciones, y “MiNombre.xml” es como deseo llamar al archivo, por su puesto con la extensión requerida por el comando

Para este artículo, que ubiqué el archivo en la unidad C: nuevamente, y tiene el nombre de MyApps.xml, el comando sería:

Dism /Online /Import-DefaultAppAssociations:C:MyApps.xml

image

Para verificar que efectivamente la asociación se cambió, podemos utilizar el comando:

Dism /Online /Get-DefaultAppAssociations

image

Todo está listo, bastará con instalar la aplicación (Como en este caso WinRAR) si es que no se ha hecho, crear el o los nuevos usuarios y veremos que Windows reconocerá inmediatamente que debe abrir los archivos especificados con las aplicaciones que se hayan establecido de forma predeterminada.

Opcional: ¿Por qué el usuario en el que se importan no reconoce las asocicaciones?

Si esto lo hicimos como en este post desde unas imágenes Online, es decir, desde un sistema operativo ya andando, nuestro primer usuario sólo servirá para predeterminar, pero no reconocerá necesariamente esta configuración a menos que la hagamos manualmente, y la razón, es que este archivo importado lo único que le dice a Windows es que cada que se inicie un nuevo usuario, se le asocie las extensiones con las aplicaciones, y aunque aplica para todos los usuarios, la configuración se hace en HKEY_CURRENT_USER, lo que indica que la configuración se va aplicando usuario por usuario.

Si utilizamos Process Monitor de Sysinternals por ejemplo, podremos ver este comportamiento claramente con la opción de Enable Boot Logging, bastará con reiniciar desde el usuario que se importó después de habilitar la característica de Process Monitor, y seguir a la extensión para saber qué claves crea, si fuéramos a enfocarnos en la de este post, es decir, .ZIP, veríamos entre otras cosas, esto:

image

La clave que está seleccionada, junto con la operación de RegSetValue que normalmente está más abajo, son las dos más importantes, la primera crea el valor de UserChoice en la clave: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.zip

La segunda operación, que en realidad se repetirá dos veces (NO se ve en la captura), es establecer dos valores, Hash y Progid, que se verán reflejados en el Registro de Windows, por supuesto:

D4

Ambos cumplen la función de identificar las aplicaciones con las que nosotros decidimos que se iban a abrir las distintas extensiones, esta clave se crea también cuando establecemos la asociación en el primer paso de este artículo, y mientras UserChoice esté con vida, no se cambiará la asociación, a menos que cada uno lo haga manualmente.

Si UserChoice no existiera, como predeterminadamente sucede, Windows leería los valores que identifiquen a la, o a las aplicaciones con las que se puede abrir la extensión dentro de la clave de OpenWithProgid. Para el caso de las que ya Windows reconoce predeterminadamente, como .ZIP o .PDF, suele haber recién instalado un solo valor, específicamente: CompressedFolder, así que Windows busca dentro de HKEY_CLASSES_ROOT la clave que corresponda a ese valor y utiliza la aplicación.

image

Cuando se instala otra aplicación como WinRAR sin embargo, pasan a ser dos valores que trabajan como Variables de entorno, la primera para el Explorador, y la segunda para WinRAR:

image

*Nota: Internamente, la variable de WinRAR es: WinRAR.ZIP.

Como hay dos, ya Windows dejará que el usuario sea el que elija, una vez lo haga, es donde se crea la carpeta UserChoice y sus respectivos valores.

*Nota: Windows es supremamente inteligente con respecto a sus asociaciones, si los valores no se encuentran en su clave de HKCU, los buscará en HKEY_CLASSES_ROOT.zip por ejemplo y los copiará nuevamente a HKCU; si no está en HKCR, utilizará los que encuentre dentro de HKCU, hasta que se quede sin los dos, y no pueda referenciar ninguna aplicación (Esto pasaría si eliminamos ambas claves):

2

Hay muchísimo más que contar, tanto en el escenario de implementación offline, como de su espléndido comportamiento a nivel del Registro de Windows, cosas que trataremos de ir viendo conforme vaya incrementando mis conocimientos, y escriba artículos específicos de implementación o de Internals.

Saludos,

Checho

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *