viernes, 5 de diciembre de 2008

Instaladores web en Windows Server 2008 e IIS 7

Una de las etapas del desarrollo de software que más me suelen preocupar es la de despliegue, no tanto por la importancia que tiene sino por la poca importancia que se le suele dar. Es demasiado habitual no tener esta etapa en consideración a la hora de planear el desarrollo de un proyecto y, llegado el momento, todo son prisas y problemas.

En el caso en que se tenga en consideración esta etapa, una de las maneras más sencillas para desplegar una aplicación es utilizar un paquete de distribución generado con Visual Studio. En muy pocos clicks obtendrás lo que buscas. Eso sí, no se debe menospreciar la dificultad que puede llegar a tener esta tarea en caso de que las cosas se compliquen.

La última muestra de esto que os cuento me sucedió esta semana cuando, tras haberlo hecho en alguna otra ocasión con éxito, intenté crear un proyecto de instalación para una aplicación web con Visual Studio 2008, para ser instalada en Windows Server 2008. El caso es que, a diferencia de las otras veces, una vez generado el programa de instalación, al ejecutarlo no llegaba ni a mostrar la página de bienvenida. En lugar de eso, aparecía un error similar al siguiente:

"The installer was interrupted before XXX could be installed. You need to restart the installer to try again." (copio el texto en inglés porque estaba ejecutando el instalador en un servidor WS 2008 English)

La traducción sería algo así como: "El proceso de instalación de XXX se canceló antes de finalizar. Reinicie el proceso de instalación para probar de nuevo".

Poca información, la verdad. La única solución que quedaba era mirar los logs del instalador, que pueden ser generados de la siguiente manera:

msiexec /i paquete.msi /lv errores.log

Tras un rato investigando los logs llegué a la conclusión de que el problema venía por la manera en que el instalador trataba de encontrar los metadatos de IIS7 y recordé que hay una manera de permitir que IIS7 pueda administrarse en modo compatible con IIS6, con el que nunca tuve problemas con este tipo de instaladores. Fui a la administración de roles del servidor y añadí esta opción, como muestra la figura:

Tras realizar esto, pude comprobar para mi tranquilidad que la instalación se realizaba sin ningún inconveniente. Podemos concluir que si queremos utilizar la herramienta que proporciona Microsoft para generar paquetes de distribución web compatibles con IIS7 deberemos tener como prerrequisito que el modo de compatibilidad con IIS6 esté activado. Eso, o crear una custom action que realice todo el proceso de creación del directorio virtual y copiado de los ficheros de manera automática. Lo dejo a vuestra elección.

0 comentarios: