Está en la página 1de 13

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.

 El check 'Allow user to start....' indica que, al final de la instalación se ofrecerá al usuario la
posibilidad de abrir el programa.
 El check 'The application doesn't...' deshabilita el 'main executable file', cosa que
habitualmente necesitaremos. Por lo tanto no lo marcaremos.
 'Other application files': aquí es donde añadiríamos todos los ficheros auxiliares de nuestra
aplicación. Caso de distribuir una aplicación basada en varias bases de datos, aquí es
donde añadiríamos los ficheros (incluso los directorios). También podemos incluir los
iconos, imágenes, documentos de texto, etc necesarios para el funcionamiento de nuestra
aplicación. A petición de Sid, estudiamos como añadir los archivos de un subdirectorio y
que estos se instalen correctamente.
o Add file(s): permite añadir ficheros a nuestra compilación
o Add directory: permite añadir directorios a nuestra compilación. Aparece un
mensaje que nos pregunta: Should Files in subdirectory el-que-hemos-puestoalso
be included?. Pues eso, que si queremos incluir los ficheros de ese subdirectorio
en la compilación. Si los añadimos y no hacemos nada más, en el momento de
instalar, nos pondrá todos los ficheros en el mismo directorio que el raíz de la
aplicación. Para que los ponga en un directorio aparte, utilizar el botón Edit.
o Edit: Importante. Tal como decíamos antes, al añadir un subdirectorio, debemos
indicarle al programa que también queremos que instale los archivos en un
subdirectorio. Al clicar en este botón, se nos ofrece la posibilidad de especificar
ese subdirectorio.
En esta pantalla, el campo importante es el Destination subdirectory, que és dónde
queremos que se instalen los archivos que hemos seleccionado en al añadir un directorio.
Esta opción también sirve para instalar archivos individuales en otros directorios distintos
del de nuestra aplicación (supongo que tendrá algo que ver con la instalación de ActiveX,
pero no lo se seguro. Seguiremos investigando)

o Remove. Borra el archivo/directorio que hemos añadido previamente a la


compilación.

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:

 Ofrecer al usuario la posibilidad de cambiar el nombre del directorio del menú inicio
 Ofrecer al usuario la posibilidad de desactivar la creación de del menú de inicio
 Crear un enlace a la página web que hemos indicado en el punto 6
 Crear un icono de desinstalación en el directorio del menú inicio
 Ofrecer al usuario la posibilidad de que se cree un icono en el escritorio
 Ofrecer al usuario la posibilidad de que se cree un icono en la barra de lanzamiento rápido

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.

 License file: ruta al archivo txt que muestra los términos del contrato de licencia de nuestra
aplicación. Si rellenamos esta línea, durante la instalación nos aparecerá una pantalla con
la opción Acepto el contrato o no.
 Information file shown before installation: ruta al archivo txt que muestra información sobre
nuestro programa o sobre la instalación.
 Information file shown after installation: ruta al archivo txt que muestra información sobre
nuestro programa. Habitualmente seria dónde explicamos al usuario lo que hemos añadido
de nuevo, algún truco o consejo, etc. Este seria el más parecido al Leeme.txt

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.

 Custom compiler output directory: aquí ponemos el directorio dónde se guardará el fichero
compilado
 Compiler output base file name: nombre del archivo exe que se generará. Por defecto
aparece setup
 Custom Setup icon file: icono que identificará a la aplicación. Es el que aparece en el menú
de inicio, escritorio y barra de lanzamiento rápido una vez instalada la aplicación.
 Setup password: aunque yo no lo he probado, parece obvio que pedirá una contraseña en
el momento de la instalación

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 poremail.

Un saludo.

También podría gustarte