Como hacer un Setup.exe con Inno Setup

En el foro se ha preguntado varias veces como crear un archivo de instalación de nuestras aplicaciones para poder distribuirlas. Casi siempre se ha mencionado el mismo programa: Inno Setup. Pero no he encontrado una explicación a su funcionamiento (lo más probable es que no lo he sabido buscar)

Para este pequeño tutorial se ha utilizado Inno Setup 5.1.6. Según el archivo License.txt que acompaña al software, este se puede utilizar libremente. Solo dice que, si se utiliza para distribuir aplicaciones comerciales, seria un detalle mencionar que se ha utilizado dicho software, pero que no es imprescindible.

El software lo puedes descargar pinchando aquí. Selecciona Stable Release y descarga el exe o el zip (a conveniencia)

Una vez descargado e instalado, nos daremos cuenta de que el programa esta en inglés... vaya hombre ¿y ahora yo, que no sé inglés, como lo hago? Respuesta: Pues por eso he preparado este pequeño tutorial, aunque en realidad casi no hace falta, pero tenia ganas de escribir (y de paso, engordar la web).

Avanzándonos un poco a los acontecimientos (aun no hemos creado absolutamente nada), también nos daremos cuenta de que el programa viene acompañado de varios idiomas, entre los que, lamentablemente a fecha de hoy (2 de marzo de 2006), no se encuentra el Castellano. Pinchando aquí te podrás bajar el fichero de idioma en castellano. Es un pequeñísimo zip de 7 Kb, pero es que no he encontrado la forma de que se pueda bajar directamente (gracias Francesc López por reportar el bug). Descárgalo dónde quieras, pero el archivo .isl que contiene, lo copias en el directorio Languajes. Ese directorio esta dónde hayas instalado Inno Setup, habitualmente C:\Archivos de Programa\Inno Setup 5\

Vale, vamos 'al tajo'.

1. Abrimos Inno Setup

2. Lo primero que aparece es la posibilidad de crear un New file (2 opciones) o abrir un 'Scripting File' existente.

3. Nosotros, que no sabemos demasiado bien como funciona esto, escogeremos la opción 'Create a new script file using the Script Wizard' (con el asistente, a lo fácil)

4. Aparece el asistente para crear el fichero.

5. Muy bonito. Viene a decir que el asistente nos guiará en el proceso para crear un script. También avisa que no todas las utilidades están contempladas en el asistente, pero con las que nos ofrece, ya podremos crear algo 'chulo'. Next

6. Como dice en el pie del asistente, los campos en negrita son requeridos. Así pues, pondremos el nombre de nuestra aplicación, el nombre incluyendo la versión, quien publica la aplicación y la web del 'publicador'. Los nombres no necesariamente deben ser iguales, yo puedo llamar a mi aplicación Control de llamadas y a mi nombre con versión: Llamadas 2.0. El publicador es el nombre de nuestra compañía. Podríamos poner: MVP-Access o La Bellota Software y la página web relacionada. Procura ser coherente y no pongas links a Walt Disney... Una vez relleno, Next.

7. Ahora definimos el directorio donde se instalará el programa. Por defecto nos ofrece Program Files directory. Es decir, la carpeta Archivos de programa o Program Files (dependiendo del lenguaje del sistema operativo). No lo tocaremos. Lo que sí definiremos es el subdirectorio, por ejemplo: MVP-Acces\Llamadas. El check de 'Allow user...' sirve para permitir al usuario cambiar el directorio dónde se instalará. El check 'The application doesn't...' sirve para indicar que la aplicación no necesita un directorio (¿y dónde lo pondrá?), pero nunca lo marcamos. Next.

8. Vamos a definir cual es la aplicación de cabecera de nuestro 'paquete'. Para hacerlo fácil, clicaremos en 'Browse...' y buscaremos el archivo. No debe ser necesariamente un exe, puede ser cualquier tipo de archivo con una extensión 'conocida' que Windows tenga asociada a un programa concreto. Así pues, podríamos escoger una mdb sin problemas.

Next

9. Ahora vamos a decidir la ubicación de la aplicación en el menú de inicio de Windows. Si queremos crear un grupo porque somos muy "echaos p'alante" y distribuimos muchas aplicaciones, podemos poner el nombre de la compañía\aplicación. Por ejemplo: MVP-Access\Control de llamadas. Los checks sirven para lo siguiente:

Una vez decidido que queremos hacer con estas opciones, Next.

10. Documentación que acompaña al programa de instalación y que se mostrará durante la misma. Estos campos son opcionales.

Una vez asignados (a discreción) los archivos, Next.

11. Aquí es dónde decidimos en que idiomas se mostrara la información de instalación, es decir, en que idioma trabajará el asistente de instalación. Habitualmente aparece marcado English, pero puedes escoger más idiomas. Si me has hecho caso y has descargado el idioma castellano, también te aparecerá en la lista. Next.

12. Ahora definimos las opciones de compilación del programa.

Una vez definidos los campos que queramos, Next.

13. Bien, ya hemos creado nuestro script para el archivo de instalación. Clicamos en Finish.

14. Nos aparecerá un mensaje que dice: Would you like compile the new script now?, vamos que si queremos compilar ya el fichero setup.exe que hemos definido con el asistente. A discreción. Este mensaje aparece sobre la pantalla que nos muestra el script:

Aquí vemos como quedaría nuestro script de instalación.

Primero aparece [Setup], que son los parámetros principales de la instalación.

Despuás los [Languajes] en los cuales se ofrecerá la instalación.

Las [Tasks], básicamente si se ofrecerá la posibilidad de crear iconos en el escritorio y en la barra de lanzamiento rápido.

Despuás aparecen los [Files] archivos que se instalaran con nuestra aplicación. Para OCX y DLLs, ver punto 16. Para Tablas de contenido (.tlb), ver punto 17.

[INI], Aquí aparece el link a nuestra página web, caso que la hayamos definido en el asistente.

[Icons] Los iconos que se crearan en el menú de inicio y barra de lanzamiento rápido.

Importante: Ausias hace notar que los iconos que se crean, se crearán en función del tipo de archivo que hace las funciones de cabecera. Asi pues, si nuestra aplicación de cabecera es una BDD en Access, mostrará el icono asociado a las bases de datos Access.

Cómo lo solucionamos.

Veras que esta sección tiene varias líneas. Debemos encontrar aquellas que hacen referencia a la aplicación de cabecera. Probablemente existan 2: la del escritorio y la del menú de inicio. Estas son las líneas que ha generado mi Wizard (y en verde y negrita lo que hay que añadir para que se apliquen nuestros iconos):

Name: "{group}\Control de llamadas"; Filename: "{app}\Llamadas v2.mdb"; IconFilename: "{app}\TEL10A.ico"
Name: "{group}\{cm:ProgramOnTheWeb,Control de llamadas}"; Filename: "{app}\Llamadas v2.url"
Name: "{group}\{cm:UninstallProgram,Control de llamadas}"; Filename: "{uninstallexe}"
Name: "{userdesktop}\Control de llamadas"; Filename: "{app}\Llamadas v2.mdb"; Tasks: desktopicon; IconFilename: "{app}\TEL10A.ico"
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Control de llamadas"; Filename: "{app}\Llamadas v2.mdb"; Tasks: quicklaunchicon

Obviamente, el icono deberá incluirse en el paquete de instalación y, para mejor funcionamiento, estar en el mismo directorio que la aplicación (o en un subdierctorio de la misma).

[Run] el programa de cabecera de nuestra aplicación. El que hemos definido en el punto 7.

[UninstallDelete] La información de desinstalación, si hemos marcado que se cree en el asistente

15. Si en el punto 14 hemos contestado que no, y ahora queremos crear el fichero, seleccionamos el menú Build / Compile. Esto nos creará el Setup.exe en el directorio que le hayamos especificado.

16. Instalar un OCX o una DLL. Bien, parece que para instalar un OCX o una DLL deberemos ponernos dentro del script directamente. Entonces añadiremos la siguiente línea en el apartado [Files]

Source: "rutacompletalfichero\fichero.ext"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile regserver

Esto recupera el fichero OCX o DLL que queremos que se instale conjuntamente con nuestra aplicación, lo incluye en el Setup.exe y, cuando se instala, procede a registrarlo en la máquina. El argumento alwaysskipifsameorolder, hace que se reemplace el fichero (caso de existir) sin preguntar nada, con la excepción de que nunca se sobrescriben versiones posteriores.

17. Instalar tablas de contenido (.tlb). Al igual que para un OCX o una DLL, deberemos meternos en el script directamente.

Source: "rutacompletalfichero\fichero.tlb"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile regtypelib

Bueno, parece que esto ya esta un poco mas completo. Creo que ahora solo falta como poder pedir una clave de producto, si es que se puede hacer. También estoy mirando los 'updates' de nuestro producto, que parece que también se puede hacer.

En cuanto tenga un poco de tiempo, intento investigarlo. De todas formas, cualquier comentario, aclaración o ampliación de lo aquí expuesto, me lo podéis mandar por email.

Un saludo.

Inicio
Menú Access
Menú Tutoriales

 

Última actualización: 30 de mayo de 2007

© Xavi Lloberas, 2005-2007