Instalador Completo: Inno Setup + MariaDB 11.5

¿Conseguiste transformar tu aplicación web en una aplicación de escritorio? ¡Excelente! Ahora, llevemos tu proyecto al siguiente nivel. En este tutorial, te mostraremos cómo crear un instalador profesional que incluya tu aplicación y una base de datos MariaDB 11.5. ¡Olvídate de las configuraciones manuales y entrega una experiencia de instalación impecable a tus usuarios!”

En publicaciones anteriores mostramos como generar un ejecutable con un programa codificado en PHP usando ElectronJS, si no lo vio favor de entrar al siguiente enlace Cómo convertir Web hecha en PHP8 con FrameWork CodeIgniter 4 en una APP de Escritorio

Ahora lo que mostraremos es como hacer un instalador en el cual se instale el ejecutable junto a la base de datos, todo esto usando InnoSetup, el instalador de MariaDB 11.5

Primero tenemos que tener la carpeta lista con todos los archivos que vamos a instalar, para el caso de este manual lo dejaremos en el escritorio, y como podrán observar es necesario que dejen los archivos ya instalados de MariaDB ya que si MariaDB ya está instalado en otra instancia no tendremos los archivos que están en MariaDB/bin necesarios para levantar el servicio y la base de datos, es necesario tener también el instalador de MariaDB en la carpeta.



En la siguiente ventana simplemente nos da la bienvenida, igual solo le damos click en Next.


Se mostrará la ventana en la cual ya nos solicita el nombre de la aplicación, la versión de la aplicación, el publicador y el website de la aplicación

Les ponemos los datos y le damos click en Next.


Luego sigue configurar la ruta donde se va instalar la aplicación, lo ideal es que se instale en c:\MedicalSoft, por que los scripts se ejecutan a través de ese directorio, entonces nuestra configuración quería de la siguiente manera en la que se ve la imagen y le damos click en el botón Next.



En la siguiente ventana elegir el ejecutable y el folder donde estarán los archivos que vamos a instalar, lógicamente vamos a elegir el ejecutable que hicimos con electronJS y para adjuntar todos los archivos con el botón de Add folder…. y le damos click en Next.



En la siguiente ventana nos pedirá si deseamos asociar una extensión de archivo al programa, lo desactivamos y le damos click al botón a Next



En la siguiente ventana nos servirá para decidir si vamos a crear un acceso directo al escritorio, lo dejamos tal y como esta de la siguiente forma



En la licencia lo podemos dejar tal y como esta, aunque podemos adjuntar las licencia de MariaDB, PHP y ElectronJS, pero para efectos de funcionamiento no afecta



En el modo de instalación lo dejamos de la siguiente manera y damos click en siguiente



En la siguiente ventana dejarla tal y como esta



En el lenguaje pueden elegir lo que más les convengan



Configuramos en donde se va compilar nuestro instalador, el nombre, podemos ponerle también un icono y password



En la siguiente ventana la dejamos tal y como está y le damos click en siguiente



Finalmente, en la siguiente ventana nos mostrará hemos terminado con el asistente, presionamos el botón de Finish y listo



Finalmente tenemos nuestro código que podemos empezar a modificar para agregar los extras para que nos instale la base de datos



Primero agregamos la linea PrivilegesRequired=admin para que el instalador se ejecute por default como administrador



En la sección run agregamos la siguiente línea que lo que hará es instalarnos MariaDB en caso de estar desinstaladoFilename: "msiexec.exe"; Parameters: "/i {app}\mariadb-11.5.2-winx64.msi PORT=3326 PASSWORD=2024 SERVICENAME=MariaDBOrionMedicalSoft ADDLOCAL=ALL REMOVE=DEVEL,HeidiSQL INSTALLDIR=""C:\medicalsoft\MariaDB"" /L*v log.txt /qb"; WorkingDir: {app}; Flags: waituntilterminated skipifdoesntexist En caso de que ya exista una instancia creamos otra con el puerto 3306 con la siguiente línea en la sección run Filename: "{app}\MariaDB\bin\mysql_install_db.exe"; Parameters: "--datadir={app}\MariaDB\data --service=MariaDBOrionMedicalSoft --port=3326"; Flags: waituntilterminated skipifdoesntexist En la tercer línea iniciamos el servicio de la nueva instancia creada


Filename: "sc.exe"; Parameters: " start MariaDBOrionMedicalSoft" ; Flags: waituntilterminated
En la cuarta línea creamos la base de datosFilename: "{app}\MariaDB\bin\mysql.exe"; Parameters: "-u root -P 3326 -e ""CREATE SCHEMA medicalsoft DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish2_ci;"""; StatusMsg: "Instalando Base de datos"; Flags: waituntilterminated; En la quinta línea creamos la tabla en la base de datos Filename: "{app}\levantaBase.bat"; Parameters: ""; StatusMsg: "Instalando Base de datos"; Flags: waituntilterminated; Dejamos así la sección de [uninstall] para quitar el servicio de la instancia creada


[UninstallRun]
Filename: "{app}\MariaDB\bin\mysqld.exe"; RunOnceId: "DelService"; Parameters: "--remove MariaDBOrionMedicalSoft"; Flags: runascurrentuser waituntilterminated runhidden;
Y listo Ahora simplemente presionamos CTRL +F9 para generar el instalador o también nos podemos ir al menú Build submenu Compile

Y ya nos crea el instalador


Dejo el codigo completo generado para innoSetup


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "MedicalSoft"
#define MyAppVersion "1.5"
#define MyAppPublisher "Cesarsystems"
#define MyAppURL "https://cesarsystems.com.mx/"
#define MyAppExeName "MedicalSoft.exe"

[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={{33215664-4D6A-4442-8BC1-2739ADB69DD7}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=C:\{#MyAppName}
; "ArchitecturesAllowed=x64compatible" specifies that Setup cannot run
; on anything but x64 and Windows 11 on Arm.
ArchitecturesAllowed=x64compatible
; "ArchitecturesInstallIn64BitMode=x64compatible" requests that the
; install be done in "64-bit mode" on x64 or Windows 11 on Arm,
; meaning it should use the native 64-bit Program Files directory and
; the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64compatible
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
PrivilegesRequiredOverridesAllowed=commandline
OutputDir=C:\Users\HP\Desktop
OutputBaseFilename=InstaladorMedicalSoft
Compression=lzma
SolidCompression=yes
WizardStyle=modern
PrivilegesRequired=admin

[Languages]
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Users\HP\Desktop\MedicalSoft-win32-x64\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\HP\Desktop\MedicalSoft-win32-x64\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

Filename: "msiexec.exe"; Parameters: "/i {app}\mariadb-11.5.2-winx64.msi PORT=3326 PASSWORD=2024 SERVICENAME=MariaDBOrionMedicalSoft ADDLOCAL=ALL REMOVE=DEVEL,HeidiSQL INSTALLDIR=""C:\medicalsoft\MariaDB"" /L*v log.txt /qb"; WorkingDir: {app}; Flags: waituntilterminated skipifdoesntexist




Filename: "{app}\MariaDB\bin\mysql_install_db.exe"; Parameters: "--datadir={app}\MariaDB\data --service=MariaDBOrionMedicalSoft --port=3326"; Flags: waituntilterminated skipifdoesntexist

Filename: "sc.exe"; Parameters: " start MariaDBOrionMedicalSoft" ; Flags: waituntilterminated 

Filename: "{app}\MariaDB\bin\mysql.exe"; Parameters: "-u root  -P 3326 -e ""CREATE SCHEMA medicalsoft DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish2_ci;"""; StatusMsg: "Instalando Base de datos"; Flags: waituntilterminated;
;Filename: "{app}\MariaDB\bin\mysql.exe"; Parameters: "-u root  -P 3316 ci4jcpospro< c:\CI4JCProyecto\ci4jcpospro.sql"; StatusMsg: "Instalando Base de datos";
Filename: "{app}\levantaBase.bat"; Parameters: ""; StatusMsg: "Instalando Base de datos"; Flags: waituntilterminated;

Comentarios

Entradas populares