El cliente de Oracle 10g x64 que no era compatible con Windows 8, Process Explorer, ACT y su solución

shutterstock_82751101_6E4CAFF4

Dentro de las funciones que hago en mi trabajo, están las de visitar diferentes clientes alrededor del país (Colombia) y ayudarlos a diagnosticar y de ser posible, mitigar problemas en cuanto a Compatibilidad de Aplicaciones sobre la última plataforma Windows disponible – En este caso, Windows 8 por supuesto.- Lamentablemente, esto no sucede con la frecuencia que me gustaría, pues enfrentarse a este tipo de problmeas supone retos y aprendizajes muy enriquecedores.

En el caso que expondré en este post, me enfrenté a una aplicación que muy probablemente varias empresas deberán instalar cuando prueben Windows 8, así que decidí explicar como siempre el problema, la posible causa y una solución esperando que les sirva en caso de que den a parar en este blog buscando respuestas.

El problema

Como es normal en gran mayoría de las empresas que están probando actualmente Windows 8, se están enfrentando no solo a la compatibilidad de la aplicación en sí con el sistema operativo, sino también al funcionamiento en la arquitectura de 64 bits. Para el caso en cuestión, se trataba del cliente de 64 bits de Oracle Universal Installer 10g.

A pesar de que el cliente funciona sin ningún problema en Windows 7, al tratar de instalarlo en un Windows 8 x64, ejecutando el Setup.exe recibía el siguiente mensaje desde un Símbolo del Sistema:

image

Como ven, apenas lanzado el instalador, estaba revisando la versión del sistema operativo, y muy claramente especificada que debía ser 5.0, 5.1, 5.2, 6.0 o 6.1. Resultado de esta revisión, encontraba que la que versión Actual era la 6.2 (Windows 8) y por ende, reportaba un fallo (Failed <<<<) y pedía presionar una tecla para salir.

La causa

Claramente, como se da en un alto porcentaje de las aplicaciones que dicen no funcionar en un sistema operativo posterior, estaba comprobando explícitamente por versión del sistema operativo; aunque este, a diferencia de muchas aplicaciones, tenía un rango más alto en las versiones del sistema operativo que soportaba nativamente.  La versión interna de Windows 8, es 6.2, y como el cliente comprueba la versión mayor y menor, es decir, 6 y después 2, nunca lo aceptará.

Ahora, lo que normalmente se hace en primera instancia con este tipo de aplicaciones, es ir a las propiedades del ejecutable, en este caso del Setup.exe, pestaña de Compatibilidad y aplicar el Modo de Compatibilidad con alguna versión en la que funcione, por ejemplo Windows 7. De esta forma, Windows aplicará una mentira sobre versión e intentará engañar al ejecutable para tratar de responderle con la versión que busca:

image

Al ejecutar nuevamente el Setup.exe, la primera impresión fue bastante gratificante, pues la aplicación parecía pasar esta etapa de validación de versión, pues el resultado para el instalador era 6.1 así que indicaba Passed, y esto debía llevar a lanzar el asistente de instalación:

image

No obstante, después de unos segundos de la pantalla inicial, el asistente de instalación de Oracle Universal Installer núnca aparecía, cosa que no debía ser así, pues si ya había pasado el mayor problema, que era la validación de versión, tenía que iniciarse. Después de validar que esto sucediera en todos los equipos Windows 8 a 64 bits, para descartar que fuera solo de un PC, pensé que era necesario ser un poco más fuertes con el instalador y aplicarle un Shim, utilizando la estupenda herramienta de Application Compatibility Toolkit (ACT).

Después de correr el ACT, inicié el asistente para la creación de un nuevo Fix, indiqué los primeros datos requeridos por el asistente, seleccioné el Shim de Win7RTMVersionLie, que aplicaría una mentira sobre versión, pero al darle al botón Run test para verificar que el Shim funcionara en el Setup.exe, recibí un mensaje de error de parte de ACT:

image

A parte de que la aplicación no me corría, ACT no era capaz de aplicar el Shim y mostraba un mensaje que al parecer, se referería a algún tema de permisos. Sin embargo, por más que busqué con Process Monitor, por lo menos desde mi experiencia, no fui capaz de encontrar algo que me ayudara, así que ahora tenía dos problemas en uno.
Después de dar varias vueltas durante bastantes días con este problema, recordé que Process Monitor no es la única herramienta de Sysinternals que me podría echar una mano en este caso, y aquí es donde recordé al Súper Administrador de Tareas: Process Explorer.

Una de las características más sencillas y notables de Process Explorer (A mi modo de ver), es que permite organizar los resultados en un Árbol de Procesos, permitiendo identificar los procesos padres de cada ejecutable, si es que tiene alguno, y ver detalles relevantes como el contexto en el que está corriendo, tanto a nivel de Windows (Kernel o Usuario) como a nivel de seguridad, entre muchas otras cosas. A parte del Árbol de Procesos, lo que en este caso me ayudó, es que Process Explorer identifica cuando un proceso se está recién ejecutando porque lo resalta de color verde de forma predeterminada, al igual que cuando se está cerrando, pues lo pone en color rojo. Aunque es 1 segundo, se puede modificar el delay hasta 9 segundos, permitiendo dar una mirada pequeña, pero más detallada a lo que se abre y se lanza mientras se reproduce el comportamiento.

*Nota: La guía ideal para Process Explorer y todas las herramientas de Sysinternals, están en el libro de Sysinternals Administrator’s Reference:
http://technet.microsoft.com/en-us/sysinternals/hh290819.aspx

En este orden de ideas, lo que hice fue ejecutar Process Explorer, ir al menú de Options, seleccionar Difference Highlighting Duration, y lo establecí a 9 segundos:

image

Después de esto, con el Process Explorer abierto, ejecuté el Setup.exe de los archivos de instalación del cliente de Oracle, y mientras se reproducía el comportamiento de abrir y terminar la consola sin ningún asistente, volví al Process Explorer, y después de unos segundos en Verde, esto fue lo que vi en color Rojo, indicando que se estaba cerrando:

image

Exceptuando el javaw.exe, los dos unzip.exe y el conhost.exe, que son subprocesos para mostrar la Consola, descomprmir (algo, ni idea qué) y lanzar la aplicación, mi primera impresión se debió al oui.exe, que estaba siendo llamado por el setup.exe ya que desde ahí se supone que se estaba lanzando en verdad el asistente de instalación. Ahora bien, ¿De dónde salía el oui.exe? La respuesta la da el propio Process Explorer, pues con solo pasar el mouse por el proceso o bien hacer doble clic para entrar a sus propiedades, podía ver el Path y el Command Line que me indicaban dónde estaba físicamente y esto fue lo que pude ver:

image

El proceso de oui.exe, se encontraba dentro de la carpeta install, que hace parte de los archivos de instalación del cliente de Oracle 10g. El problema es que cuando fui a buscar el proceso, no lo pude ver:

image

El motivo de esto, es que ese ejecutable predetermiadamente se encuentra como un archivo oculto, así que primero debía mostrar todo lo oculto desde las Propiedades de las carpetas en el Explorador de Windows y luego podría tener acceso a él. Para mi mala suerte, aún cambiando las propiedades de compatibilidad del oui.exe y ejecutándolo con privilegios elevados, el problema seguía exactamente igual, solo abría la primera ventana con el Símbolo del sistema aprobando la instalación.

La solución

En el mundo del Troubleshooting y la Compatibilidad de Aplicaciones, es necesario ser paciente, buscarse algo de creatividad y sobre todo, muy persistente; pues hay muchas variantes en las que puedes buscar la solución, pero afortunadamente varias formas en las que puedes llegar a ella…

En este caso, como última opción dentro de mis limitados conocimientos, se me ocurrió aplicar el Shim de ACT, pero esta vez directamente al oui.exe, quera desde donde finalmente se iniciaba el proceso para el arranque del asistente de instalación. Desde ACT, creé entonces un nuevo Fix, pasé en blanco la página de Compatibility Modes y en la página de Compatibility Fixes, seleccioné nuevamente Win7RTMVersionLie:

image

Le di clic en el botón Test Run… para realizar la prueba, y para mi fortuna, después de unos pocos segundos el aclamado asistente apareció:

image

Al probar el funcionamiento del Shim, cerré el asistente y le di clic en el botón Next y Finish para terminar. Finalmente, le di clic en el botón Save de la parte superior en la Consola de ACT para guardar el Shim, especificando dos veces el nombre, uno para el que maneja la consola y otro para el que se guarda físicamente:

image

Solo quedaba aprovechar la consola de ACT para instalar el Shim localmente haciendo clic derecho en la Base de datos que se creó desde el asistente para  el nuevo Fix y seleccionando Install.

image

Con esto, y después del mensaje de confirmación, el asistente se lanzó sin problemas y sin necesidad de modificar las propiedades de compatibilidad, y facilitando su instalación aunque él mismo no lo quisiera en primera instancia.

[Appendix]: Descarga e instalación del Shim

Si alguno de ustedes tiene exactamente el mismo problema en equipos Windows 8 a 64 bits, con el cliente de Oracle 10 x64, pueden descargar el Shim desde aquí:

Enlace directo: http://sdrv.ms/16Wk758

Para instalar, basta con descomprimir el archivo ShimOracle.zip, y ejecutar ShimOracle.exe. Les pedirá elevación de privilegios (Por el UAC), y después de aceptar los pequeños términos de licencia, deberán ver un mensaje en Consola similar al siguiente:

image

Después de asegurarse que diga “Installation of OUI complete.” y presionar una tecla para cerrar, deberían poder lanzar el instalador del Oracle 10g sin problemas.

*Nota: En caso de tener inconvenientes, pueden descomprimir el .exe con WinRAR, y ejecutar como administradores el archivo InstallShim.bat.

Saludos,

Checho

Deja un comentario

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