2009-12-07

Microsoft Installer es un problema en sí mismo

Microsoft Installer es una mi*rda, con el perdón de la palabra "Installer".

Allá lejos y hace tiempo, los programas traían su propio "install.exe" o "setup.exe" y uno los corría, y a los pocos segundos tenía el programa en su propio directorio (carpeta) y de estar en un entorno gráfico, un ícono en el escritorio y ya, todo funcionaba.

Después, algunos programas fueron más allá, pensando en el usuario, y traían un "uninstall.exe" que simplemente borraba todo rastro del programa.

En la era cuando Windows se empezó a popularizar, Installshield llevó las cosas más allá e hizo que los programas fueran fácilmente instalables, con lindos botones en los que clickear hasta que finalmente una caja de diálogo nos decía "instalación finalizada" y todos contentos.

Ahora bien, si lo pensamos en detalle ¿Qué es un instalador de software? (eso que se ejecuta cuando bajamos un EXE con nuestro browser favorito y después le damos doble click)

Simplemente un programa que:

------------------------------------------
1. Descomprime un archivo compactado (generalmente el instalador ES un archivo compactado en sí mismo, técnicamente un "auto-descompresor ejecutable" (self-extracting exe).
2. Copia los archivos que forman parte del programa a su directorio de destino (usualmente a la carpeta C:\Program Files\Nombre del programa), y si hace falta, copia bibliotecas (DLLs) a c:\windows\system32, y drivers (.sys) , de necesitarlos para su funcionamiento.
3. Crea un acceso directo (.lnk) ya sea en el escritorio y/o en Inicio->Programas.
------------------------------------------

Tres funciones o pasos bastante simples. De hecho, para instalar la mayoría del software bastaría con un script (install.cmd).

Entonces, ¿por qué es tan rebuscado y proclive a errores el proceso de instalación del software?. Las respuestas son varias. Una es que Microsoft quiere dar a los administradores del sistema el mayor CONTROL posible sobre el proceso, y diseño su propio formato de empaquetamiento .MSI.

El razonamiento de Microsoft para esto es simple: "los usuarios no saben nada y los administradores tienen que tener el control". En un ambiente corporativo, por ejemplo, un administrador de red puede querer hacer un "deployment" (instalación masiva) de un determinado software a todas las máquinas, sin tener que ir máquina por máquina con un CD o haciendo click desde cada escritorio a un ejecutable compartido en la red (LAN).

A Microsoft se le ocurrió un día que debían hacer su propio instalador. Ya no se conformaban con que los creadores de programas hicieran sus propios instaladores o usaran programas para crear instaladores como Installshield (pago), o Nullsoft Installer (código abierto, software libre, de los creadores del Winamp), o WISE (pago) o Innosetup (freeware), la idea de la gente de la Iglesia de Windows es que simplemente los desarrolladores empaqueten su software en archivos .MSI (Microsoft Installer).

Durante la vida del producto, le cambiaron el nombre, ahora ya no es "Microsoft Installer" sino "Windows Installer" (la Iglesia de Windows es una iglesia muy estricta: todo gira alrededor de Windows, por eso Outlook es ahora "Windows Mail", y por eso "Microsoft Internet Explorer" es ahora "Windows Internet Explorer").

Primero: ¿Qué pasa, cual es el problema con Windows Installer? Se puede arruinar fácilmente, eso pasa. ¿Y que pasa cuando Windows Installer se arruina? Tu PC deja de poder instalar software, eso pasa.

¿Qué tan frecuente es este problema?. Muy frecuente. Hagan una búsqueda por errores como "microsoft installer error" y verán decenas de miles de resultados relevantes.

El monopolio de Bill tiene una página específica detallando 12 (doce) posibles soluciones a problemas con Microsoft Installer, las "soluciones" involucran cosas tales como meterse en el Registry a toquetear o borrar valores, borrar directorios, etcétera.

Miren como será la cosa que Microsoft liberó un "utilitario de limpieza de Windows Installer". Se consigue por acá.

Una de mis PCs con Winblows tuvo ese problema, y demás está decir que ni la reinstalación de Microsoft Installer ni el correr el "clean up utility" ayudaron en nada.

¿La solución? si crean su propio software no lo empaqueten como .MSI. Empaquetenlo como un EXE y usen NULLSOFT INSTALLER en lugar de las herramientas de Microbost. De hecho, en la máquina donde Windows Installer está totalmente arruinado, puedo instalar sin problemas software cuyo instalador es NSIS. Por ejemplo: WinAmp. Sin embargo, tratar de instalar cualquier software empaquetado como un .MSI falla irremediablemente.

Segundo, si se quieren unir al coro de sufridos odiadores de Microsoft Installer o Windows Installer pueden unirse al grupo creado al efecto en Facebook, por acá.

Tercero: Microsoft Installer Sucks. El consenso en el influyente blog Joel on Software confirma mi teoría de que Nullsoft Installer es la mejor opción. Microsoft ADMITE por acá que a veces se es mejor simplemente usar XCOPY para copiar archivos a la ubicación determinada en lugar de usar el MS Installer. Y saben qué, tienen razón.

Cuarto: la LISTA OFICIAL DE ERRORES [archivo Citebite] que puede tirar Windows Installer es francamente risible. Algunos merecen una mención especial "Error 1603: Error fatal". ¡Buenisimo! Gracias por tanta claridad, Microsoft!.

¿Yo? Si me preguntan, para mi, además de empaquetarse con Nullsoft Installer, cada aplicación debería traer su simple script "install.cmd" y "uninstall.cmd", permitiendo reinstalar directamente desde c:\program files\loquesea\

FC
PD: Aquí un listado de sólo algunos de las decenas de
artículos técnicos de resolución de problemas relacionados con MS Installer / Windows Installer en Microsoft.com:

http://windows.microsoft.com/en-US/windows-vista/Troubleshoot-installing-or-uninstalling-programs
http://support.microsoft.com/kb/315346
http://support.microsoft.com/kb/290301
http://support.microsoft.com/kb/873281
http://support.microsoft.com/kb/316309
http://support.microsoft.com/kb/319624
http://support.microsoft.com/kb/898628
http://support.microsoft.com/kb/295823
http://support.microsoft.com/kb/907749
...y siguen las firmas....

PD2: Trivia: IBM tenía también su fabricante de instaladores para su OS/2, se llamaba previsiblemente "IBM Software Installer", aunque no integrado con el sistema operativo. Desde la instalación de cualquier soft empaquetado con el, también permitía mostrar los programas instalados y desinstalarlos. Algo así como un "Add and remove programs" pero accesible desde cualquier instalador (útil cuando uno se quedaba sin espacio y quería aprovechar y desinstalar otra aplicación de poco uso). Murió, obviamente, como tanto otro software cuando llegó Lou Gerstner el hombre de las galletitas de Nabisco y IBM se convirtió en una gigante consultora a la que ya no le importó liderar en software. Llegó a existir incluso una versión Windows "IBM Software Installer for Windows".

No hay comentarios.: