La aplicación “Canal+Yomvi” que no era compatible con Windows 8, ACT, los Shims y su solución

shutterstock_82751101

Estas son de las entradas que más me gustan escribir, pues a parte de entregar una posible solución a diferentes usuarios que se estén enfrentando al iconveniente que aquí se muestra, es la mejor forma para aprender.

Como ha sucedido en diferentes artículos, el problema en este caso, es con respecto a algo que cada empresa en algún momento durante su migración a otro sistema operativo debe enfrentar: Compatibilidad de Aplicaciones.
Este problema en específico, nació de los maravillosos Foros de Microsoft TechNet en Español, y se presentaba con una aplicación comercial muy popular sobre todo en España llamada: Canal+Yomvi.

A continuación, describiré un poco más a fondo el problema, la causa encontrada y su solución o mitigación, para los que busquen cómo enfrentarlo mientras se actualiza la aplicación.

El problema

Canal+Yomvi, es una aplicación que desarrolló el Canal+, para que los usuarios puedan consumir sus servicios de TV desde diferentes dispositivos. Sin embargo, hasta este momento, si alguien descarga la aplicación desde un sistema Windows 8, muy probablemente se encontrará con el siguiente mensaje de error al lanzar el instalador:

image

Unsupported operating system, major=6, version=2,2, sp=0.0, type=1

No importa que la aplicación se ejecute con privilegios administrativos (Clic derecho, Ejecutar como administrador), o que como en la muchos casos, se le cambie el Modo de compatibilidad con Windows 7 o Windows XP desde sus propiedades, siempre se recibirá este mensaje, y por ende, no se puede proceder a la instalación.

*Nota: Este mensaje sale indiferente de la arquitectura del sistema operativo Windows 8 que se tenga instalado.

La causa

Aunque el mensaje apenas si permite aceptarlo para que se cierre la instalación, y no brinda una aparente clara ayuda, sí transmite de una forma muy precisa que la aplicación está validando la versión del sistema operativo en la que se intenta instalar. Normalmente, este tipo de problemas se mitigan cambiando el modo de compatibilidad, pues esto realiza una “Mentira sobre versión”, e intenta engañar las llamadas a la API que realiza la aplicación y hacerla creer que está sobre la plataforma que busca.

En este caso, sin embargo, no era suficiente. Como solo tiene un ejecutable para las tres versiones, probablemente esté comprobando la versión, pero de una forma errónea, ya la mayoría de estas aplicaciones, no buscan por característica, sino por un simple número. Por ejemplo, esta aplicación en su código puede estar encerrando el paso de “ser compatible o no”, indicando que si el sistema local es mayor a 5.1 (XP) y menor o igual a 6.1 (Win7), podrá instalarse, de lo contrario, no.

Hasta aquí, no sabía como forzar a Windows a que mintiera más allá de lo que podía con sus propios shims de compatibilidad, hasta que The App Compact Guy (Chris Jackson), muy amablemente me abrió una luz al final del camino acordándome de Application Compatibility Toolkit. 

La solución

Application Compatibility Toolkit (ACT), provee varias herramientas destinada al diagnóstico y mitigación sobre compatibilidad de aplicaciones, tanto para Internet Explorer como para Windows. ACT solía venir como una descarga separada, pero desde la salida del Asessment And Deployment Kit (ADK), está incluído en su descarga para ser instalado con el mismo asistente.

Una de las herramientas más interesantes que están en el kit de ACT, es el Application Compatibility Administrator, pues una vez identificadas las posibles causas, nos permitirá generar unos Shims personalizados para cada aplicación, que se podrán instalar sobre Windows localmente para mitigar los problemas de compatibilidad, e incluso hacer distribución en un ambiente de implementación para todas las máquinas.

*Nota: Un Shim, es básicamente un fix que genera el Compatibility Administrator, que se encarga de interceptar las llamadas a la API que hace Windows utilizando diferentes módulos o DLLs y devolviéndoles diferentes módulos que engañan a la aplicación haciéndose pasar por los verdaderos. Esto con el fin de realizar múltiples correcciones, como las de mentira sobre versión. En próximos artículos, intentaré ampliar más claramente este concepto, junto con la forma de utilizar ACT y todas sus características.

Ahora bien, volviendo a este caso, decidí utilizar ACT para tratar de remediar el problema que estaba causando la aplicación.

Desde el Compatibility Administrator, ejecuté el asistente para el nuevo Fix, haciendo clic derecho en New Database, debajo de Custom Databases y Create New > Application Fix.

1

En la ventana del Asistente, me bastó con llenar algunos datos para identificar la aplicación, e indicarle el acceso al ejecutable con el que se están teniendo los problemas:

image

La primera ventana que aparece, es la de Application Modes, que son básicamente los que aparecen en la pestaña de Compatibilidad que integra Windows. Como en este caso no lo resolví así, hacer algo aquí sobra.

image

La ventana de Compatibility Fixes, es la más importante dentro de este asistente. Una vez identificado el posible problema, aquí se debe elegir – entre los cientos que hay- los fixes apropiados para mitigar el comportamiento anormal de la aplicación que estemos analizando. Para mi caso, sabía que el inconveniente lo estaba causando la validación explícita sobre versión que estaba haciendo la aplicación, y como en la web indicaba que hasta Windows 7 era compatible, el Fix indicado era Win7RTMVersionLie.

image

Sin embargo, al presionar el botón Test Run para probar que el Shim funcione antes de implementarlo, seguía recibiendo el mismo mensaje.

ACT predeterminadamente excluye algunos módulos que están en ubicaciones como System32, entre otras, y que suelen utilizar aplicaciones con código administrado, como las de VB. En este orden de ideas, algunos Shims requieren que se incluyan estos módulos para poderle mentir correctamente a la aplicación.

Lo que tuve que hacer para no exluir nada, fue seleccionar el Shim, hacer clic en el botón Parameters, y debajo de Module name, escribir “*”, y hacer clic en el botón Add para que se incluyeran todos:

image

Lo siguiente es solo hacer clic en el botón Next, y Finish.

Como ya sabía que mi Shim funcionaba, debía instalarlo localmente para que la aplicación se dejara instalar. Si se quiere hacer desde la Consola, basta con guardar el Shim haciendo clic en el botón de Save, asignarle un nombre y guardarlo tanto internamente, como físicamente en un directorio fácil de acceder:

image

Por último, clic derecho en la Base de datos creada y clic en Install para que el Shim quede localmente:

image

¡Todo listo! Una vez ejecuté el instalador de la aplicación de Canal+, el resultado fue bastante satisfactorio:

image

“Milagrosamente”, ahora Canal+Yomvi era compatible y gracias a esto, pude completar la instalación sin problemas.

Como ven, no siempre y en la gran mayoría de los casos, Windows es el que tiene la culpa.

[Opcional]: Descarga e instalación del Shim

Para los que tengan este problema, pueden descargar el Shime que generé para mitigarlo mientras Canal+ lanza una nueva actualización desde aquí:

Deben descomprimir el .ZIP, y ejecutar con privilegios elevados (Clic derecho, Ejecutar como administrador) el archivo InstallShim.

Deberán ver una ventana similar a la siguiente al instalarse:

image

Estoy estudiando lo más que puedo sobre ACT, así que espero como mencioné anteriormente, empezar a escribir artículos que cubran el tema pronto.

Espero sea de utilidad.

Saludos,

Checho

Deja un comentario

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