Crea el instalador de tu aplicación con soporte para MySQL y SQL Server con InnoSetup

InnoSetup

En la etapa de finalización del desarrollo de software, es imprescindible crear un paquete instalador del producto y todas sus necesidades para que este funcione (dependencias). Para esto, InnoSetup es una excelente alternativa: flexible y poderoso, además de ser libre.

InnoSetup cuenta con plantillas típicas de cualquier instalador simple, y además de poder personalizar y adaptar el paquete final a través de la programación en pascal que incluye InnoSetup para, por ejemplo, abrir excepciones en el firewall de Windows, buscar y/o registrar una dependencia, etc.

A continuación, veremos como esta formada un archivo de InnoSetup para generar un instalador. Se puede utilizar como plantilla

Para empezar, descargaremos InnoSetup desde su página oficial

En InnoSetup se crean los instaladores mediante código en un archivo similar al formato de archivos INI o de configuración, pero existe software extra que funciona como IDE para lograr una mejor organización. Estos son: InnoIDE e Inno Script Studio

Cuando abren InnoSetup pueden crear un script mediante un asistente, recomiendo que lo sigan, ya que los siguientes puntos se trabajan sobre el código.

Secciones

En la primera sección se ubican los detalles básicos del producto (nombre del producto, versión, autor/empresa, etc.) y los parámetros del instalador en si (compresión, ubicación del archivo ejecutable final, lenguaje por defecto del instalador, etc.). No hay mucho que tocar una vez terminado el asistente.

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId=(Generado por InnoSetup)
AppName=Mi Aplicación
AppVersion=1.0
AppPublisher=VB−MUNDO
AppPublisherURL=http://www.vb−mundo.com/
AppSupportURL= http://www.vb−mundo.com/
DefaultDirName={pf}\vb−mundo ; {pf} es Program Files / Archivos de Programa, ahí se instalar nuestra aplicación por defecto
DefaultGroupName=Mi Aplicación ; nombre de la entrada en el menú inicio
AllowNoIcons=yes ; Permite que no se creen iconos de accesos en el menú inicio
OutputDir=D:\ ; Ruta donde se generará el instalador
OutputBaseFilename=instalador ; Nombre del instalador
Compression=lzma2
SolidCompression=yes
ShowLanguageDialog=no ; Permite seleccionar el lenguaje del instalador
PrivilegesRequired=admin ; Para instalar, es necesario permisos de administrador

Editor del InnoSetup

Editor del InnoSetup

En la sección Files, se indica donde están todos los archivos que se van a incluir en el instalador final. Se debe indicar su ubicación real y su ubicación en donde se deben extraer (archivos temporales, instaladores de dependencias, etc.) o instalar. Además se puede especificar otros parámetros: Sobrescribir archivos existentes, incluir carpetas enteras, registrar archivos DLL, marcar que no se desinstalen, etc. También se indican los archivos OCX o DLL necesarios para la aplicación

[Files]
Source: "D:\Mi App\aplicacion.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Mi App\iconos\*"; DestDir: "{app}\iconos"; Flags: recursesubdirs createallsubdirs
; Registro de OCX
Source: "D:\Mi App\MSCOMCTL.OCX"; DestDir: "{app}"; Flags: uninsneveruninstall sharedfile regserver
; Archivos que solo se instalen según el SO sea 32 o 64 bits, en el sistema
Source: "D:\DLL\miDLL_64.lib"; DestDir: "{sys}"; Check: Is64BitInstallMode; Flags: sharedfile uninsneveruninstall
Source: "D:\DLL\miDLL_32.lib"; DestDir: "{sys}"; Check: Is32BitInstallMode; Flags: sharedfile uninsneveruninstall

En la sección Icons, se indica que accesos directos se deben crear: en general en el escritorio, en el menú inicio, un acceso a la web del creador, y el desinstalador correspondiente. Pero se pueden agregar tantos accesos como se quiere (ejemplo para registrar o comprar, acceder al software con otros parámetros, un manual o archivo Léeme, etc.)

[Icons]
; EXE general
Name: "{group}\Iniciar Mi Aplicacion"; Filename: "{app}\ aplicacion.exe"
; Enlace a página web
Name: "{group}\Visita mi web"; FileName: http://www.vb-mundo.com/
; Desinstalar
Name: "{group}\{cm:UninstallProgram, Mi Aplicación}"; FileName: "{uninstallexe}"
; Acceso directo en escritorio de todos los usuarios
Name: "{commondesktop}\Mi Aplicación"; FileName: "{app}\aplicacion.exe"; Tasks: desktopicon

En la sección Run se indica que se debe o puede hacerse luego de la instalación, ejemplo: dar la opción de ejecutar el software luego de su instalación. Pero también puede ser para instalar dependencias o registrar archivos. 

[Run]
FileName: "{app}\aplicacion.exe"; Description: "{cm:LaunchProgram,Mi Aplicacion}"; Flags: postinstall skipifsilent

Task: Puede ser que no siempre se quiera instalar todo el paquete sino partes de ella o con opciones. Ejemplo cuando se instalan reproductores multimedia se dan las opciones de los componentes a instalar y los tipos de archivos a registrar. Estos son los task y pueden ser tanto el agregado de archivos. Los archivos a incluirse en un task deberán llevar un flag específico (un flag es una opción).

[Tasks]
; Preguntar si desea un icono en el escritorio
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";

Instalación de conectores de base de datos

La gran mayoría de software comercial y/o administrativo hace uso de base de datos, en un equipo de desarrollo ya están instalados por el IDE de desarrollo, por esto es que no se necesita volver a instalar a la hora de probar el instalador. Aún así, si es llevado a un equipo de prueba la aplicación no funcionará. Se necesita un conector ODBC para que una aplicación se conecte a una base de datos Microsoft SQL Server o MySQL, a continuación los pasos necesarios para incluirlos en nuestro instalador hecho con InnoSetup.

Microsft SQL Server

Conector Microsoft SQL Server

Primero lo que se debe hacer es descargar el instalador del conector ODBC, que se llama SQL Server Native Client, para SQL 2005 . Deben descargar el archivo sqlncli en su versión requerida (32 o 64 bits). Luego, para que sea instalado automáticamente  necesitaremos estas líneas

[Files]
; Copiar lo necesario, incluyo para ambas arquitecturas
Source: "D:\SQL\sqlncli_32.exe"; DestName: "sqlncli.exe"; DestDir: "{tmp}"; Check: not Is64BitInstallMode;
Source: "D:\SQL\sqlncli_64.exe"; DestName: "sqlncli.exe"; DestDir: "{tmp}"; Check: Is64BitInstallMode;
[Run]
Filename: "msiexec.exe"; Parameters: "/i /qb ""{tmp}\sqlncli.msi"""; StatusMsg: "Instalando SQL Native Client...";
; en caso de querer reiniciar, en la parte de parameters, también iria: "REBOOT=ReallySuppress"

Conector MySQL

MySQLPara instalar una aplicación que use MySQL, esta debe contar con el conector ODBC de MySQL que se puede descargar en la página oficial de MySql. El instalador es en realidad un archivo bat que copia archivos a la carpeta de sistema y luego los registra. El bat es innecesario, se puede copiar su comportamiento con InnoSetup, quedando de la siguiente forma

[Files]
; 64 bits
Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-winx64\lib\myodbc5.lib"; DestDir: "{sys}"; Check: Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-winx64\lib\myodbc5S.lib"; DestDir: "{sys}"; Check: Is64BitInstallMode; Flags: sharedfile uninsneveruninstall
Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-winx64\lib\myodbc5.dll"; DestDir: "{sys}"; Check: Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-winx64\lib\myodbc5S.dll"; DestDir: "{sys}"; Check: Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-winx64\doc\myodbc3.hlp"; DestDir: "{sys}"; Check: Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-winx64\bin\myodbc-installer.exe"; DestDir: "{sys}"; Check: Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

; 32 bits

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-win32\lib\myodbc5.lib"; DestDir: "{sys}"; Check: not Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-win32\lib\myodbc5S.lib"; DestDir: "{sys}"; Check: not Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-win32\lib\myodbc5.dll"; DestDir: "{sys}"; Check: not Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-win32\lib\myodbc5S.dll"; DestDir: "{sys}"; Check: not Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-win32\doc\myodbc3.hlp"; DestDir: "{sys}"; Check: not Is64BitInstallMode; Flags: sharedfile uninsneveruninstall

Source: "D:\MySQL ODBC Connector\mysql-connector-odbc-noinstall-5.1.6-win32\bin\myodbc-installer.exe"; DestDir: "{sys}"; Check: not Is64BitInstallMode; Flags: sharedfile uninsneveruninstall
[Run]
FileName: "{sys}\myodbc-installer.exe"; Parameters:"-d -a -n ""MySQL ODBC 5.1 Driver"" -t ""DRIVER=myodbc5.dll;SETUP=myodbc5S.dll"" ";StatusMsg: "Registrando MySQL...";

Instalando Runtimes Visual Basic 6

Microsoft Visual Basic 6Yo soy de programar aplicaciones en Visual Basic, que para su ejecución requieren ciertos archivos DLL registrados en el sistema. Para que el instalador de InnoSetup los registre, deben estar las siguientes líneas. Y se deben incluir los archivos que se descargan desde este enlace y el siguiente código (no difiere del código del enlace a la documentación de InnoSetup)

; begin VB system files
; (NotD: Scroll to the right to see the full lines!)
Source: "D:\Raul\Sources\vb runtimes\stdole2.tlb";  DestDir: "{sys}"; OnlyBelowVersion: 0,6; Flags: restartreplace uninsneveruninstall sharedfile regtypelib
Source: "D:\Raul\Sources\vb runtimes\msvbvm60.dll"; DestDir: "{sys}"; OnlyBelowVersion: 0,6; Flags: restartreplace uninsneveruninstall sharedfile regserver
Source: "D:\Raul\Sources\vb runtimes\oleaut32.dll"; DestDir: "{sys}"; OnlyBelowVersion: 0,6; Flags: restartreplace uninsneveruninstall sharedfile regserver
Source: "D:\Raul\Sources\vb runtimes\olepro32.dll"; DestDir: "{sys}"; OnlyBelowVersion: 0,6; Flags: restartreplace uninsneveruninstall sharedfile regserver
Source: "D:\Raul\Sources\vb runtimes\asycfilt.dll"; DestDir: "{sys}"; OnlyBelowVersion: 0,6; Flags: restartreplace uninsneveruninstall sharedfile
Source: "D:\Raul\Sources\vb runtimes\comcat.dll";   DestDir: "{sys}"; OnlyBelowVersion: 0,6; Flags: restartreplace uninsneveruninstall sharedfile regserver
; end VB system files

Y con eso y probar el instalador, ya tendremos un instalador fácil y rápido, totalmente personalizable para nuestra aplicación.

No duden en leer la documentación oficial de InnoSetup y los FAQ (Frecuently Asked Question, Preguntas Frecuentes).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Visual Basic y mucho más
CyberChimps