¿Cuántas veces hemos desarrollado una aplicación que en nuestro PC funciona perfectamente y al llevarla al PC de al lado (no digo ya llevarla al PC del cliente...), pega un pete brutal? A mí y a otros compañeros míos nos ha pasado en innumerables ocasiones. Sí, aunque somos muy bueno@s programando ;-), de vez en cuando también nos ocurren estas fatalidades.
"¿Qué librería o fichero de configuración me habré olvidado de copiar?", "¿habrá que copiar esta maldita librería bajo "
Windows/System32?", "¿será necesario registrar el control
ActiveX de marras con
regsvr32?" Son las típicas autopreguntas que azotan la maltrecha cabeza del programador después de un disgusto de tal calibre.

Después de intentar aplastar el PC (e incluso valorar la utilización del
panic mode si hay demo a la vista), normalmente el programador acude a herramientas míticas como
Dependency Walker. No lo vamos a negar, es una grandísima utilidad que analiza todas las dependencias que tiene un ejecutable o librería Windows, aunque muchas veces no es suficiente para dar con la dependencia concreta que está dejando tu
programming reputation a ras de suelo.

Lo siguiente en la
checklist post-instalación fallida es empezar a pensar cosas raras...que si las
meigas de Visual Studio...e incluso plantear que sin Visual Studio instalado en la máquina destino la aplicación nunca funcionará. ¿Comorrrr? ¿He oido bien? Esta afirmación es muy pero que muy grave, atenta contra todo proceso lógico de desarrollo de software; una cosa es el entorno de desarrollo (donde tendremos un IDE, etc.), y otra muy distinta, el entorno de producción, donde es inaceptable que haya que instalar el IDE de Visual Studio para que la aplicación funcione. Meigas, haberlas haylas, por ello, buceando por la red, uno se encuentra con
historias terroríficas que cuentan que si desarrollas en C++ en una máquina con Visual Studio 2005 SP1 instalado, en la máquina en la que vaya a correr ese
software es necesario instalar un pequeño
runtime adicional denominado"
Microsoft Visual C++ 2005 SP1 Redistributable Package", que ojo, no es lo mismo que instalar Visual Studio enterito, lo cual vuelvo a repetir, es inaceptable.
Bien, la última movida que hemos tenido no se solucionaba ni instalando este
redistributable ni rezando a la
Virgen de Lourdes, no había manera de arrancar aquello. ¿Cual ha sido entonces la solución final, ésa por la que quizás teníamos que haber empezado? Añadir a la solución (.sln) de nuestra aplicación un nuevo proyecto de instalación, un
setup project de toda la vida:

De veras, este tipo de proyectos son muy útiles, son realmente fáciles de configurar y compilar; de hecho, la mayoría de las veces basta con arrastrar el
output de tu proyecto principal (ejecutable, DLL...) al proyecto de instalación, que ya se encarga Visual Studio de arrastrar todas (o casi todas) las dependencias de dicho
output. ¿Que crees que te has dejado alguna? ¿Algún fichero de configuración...? No pasa nada, añades todo lo necesario "a mano" en el proyecto de instalación y listo. Compilas el proyecto y si todo ha ido bien, verás que por defecto se genera un archivo de instalación con extensión
.msi y otro denominado
setup.exe. Llevar estos archivos a la máquina destino (en CD,
pen-drive o lo que queráis), ejecutar el
.msi y efectuar la instalación por defecto siempre será más fiable y elegante que el método por
fuerza bruta. ¿Qué más quieres? Tu aplicación sube un escalón en
glamour con ese aspecto profesional de la instalación en plan
wizard, y tú tienes menos probabilidades de sufrir un infarto ;-).
Resumiendo este alegato de defensa en favor de los proyectos de instalación de Visual Studio:
si desarrollas con Visual Studio 2003/2005/2008, sobre todo en C++, créate un setup project para realizar la instalación y deployment de tu aplicación, te ahorrará disgustos y caras de póker ;-)
Ésta es mi humilde opinión, pero ¿utilizáis vosotr@s los proyectos de instalación o sois de los que copian el contenido de la carpeta a la máquina destino por fuerza bruta y cruzan los dedos? No os cortéis, lo hemos hecho tod@s ;-).
SaludoX.
2 comentarios:
Hola Miguel! Relacionado con esto: la depuración y las cinco fases del duelo" :)
¡Qué buen artículo des! Me quedo con la genial frase de "¡hemos nacido para crear software espectacular, no para corregirlo!". Es terriblemente cojonuda...
SaludoX campeón!
Publicar un comentario