tutorial setup pagina oficial inno descargar scripting installer inno-setup

scripting - pagina - Mysql instala y carga la base de datos en Inno-setup. Guión



inno setup pagina oficial (2)

He estado leyendo una gran cantidad de documentos sobre Stackoverflow, ¡ustedes son geniales! He tomado un código que se sugirió en otra publicación. ¡La ayuda fue genial! Logré cargar el mysql y comencé gracias a RobeN. Sin embargo, leí la documentación que se sugirió para cargar automáticamente una base de datos en la secuencia. Parece que no puedo entenderlo. ¡Cualquier ayuda sería genial!

; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Test" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "DispatchSystem.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={{790A9827-137F-4D93-A981-1A5C38FFB8F8} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}/{#MyAppName} DefaultGroupName={#MyAppName} OutputDir=C:/gd/FL/Project/xsbucks_vc/inno/ OutputBaseFilename=Logistics Dispatch Compression=lzma SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "D:/SWW/CaLogistics/EXE/mysql-5.5.11-win32.msi"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/DispatchSystem.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/background.fw.png"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/background.png"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/background234.jpg"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/database.sql"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/ds.ini"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/Ionic.Zip.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/logo.jpg"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/logo.png"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/MySql.Data.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "D:/SWW/CaLogistics/EXE/MySqlBackup.dll"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don''t use "Flags: ignoreversion" on any shared system files [Icons] Name: "{group}/{#MyAppName}"; Filename: "{app}/{#MyAppExeName}" Name: "{commondesktop}/{#MyAppName}"; Filename: "{app}/{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: msiexec; Parameters: "/i mysql-5.5.11-win32.msi /qn INSTALLDIR=""C:/mysql"""; WorkingDir:{app}; StatusMsg: Please wait while we install Mysql 5.5.11; Flags: runhidden Filename: C:/mysql/bin/mysqld.exe; Parameters:" --install"; WorkingDir: {app}; StatusMsg: Installing MySQL services; Description: Installing MySQL Service; Flags: runhidden Filename: net.exe; Parameters: start mysql; StatusMsg: Starting MySQL server; Description: Starting MySQL Server; Flags: runhidden Filename: C:/mysql/bin/mysql.exe; Parameters: "-e ""update mysql.user set password=PASSWORD(''admin'') where user=''root'';"" -u root"; WorkingDir: {app}; StatusMsg: Configuring MYSQL ; Flags: runhidden Filename: C:/mysql/bin/mysql.exe; Parameters: "-e ""flush privileges;"" -u root -padmin"; WorkingDir: {app}; StatusMsg: Configuring Database Servers; Flags: runhidden Filename: C:/mysql/bin/mysql.exe; Parameters: "-u root -padmin -h localhost --execute=""SOURCE database.sql"""; WorkingDir: {app}; StatusMsg: Loading Database; Flags: runhidden Filename: "{app}/{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, ''&'', ''&&'')}}"; Flags: nowait postinstall skipifsilent [Code] function MySQL_Is(): Boolean; var iResultCode: Integer; begin Result := true; if (not RegKeyExists(HKLM, ''SOFTWARE/MySQL AB/MySQL Server 5.5'')) or (not FileExists(ExpandConstant(''{reg:HKLM/SOFTWARE/MySQL AB/MySQL Server 5.5,Location}/bin/mysql.exe''))) then begin ExtractTemporaryFile(''mysql-5.5.11-win32.msi''); Exec(''msiexec.exe'', ''/i mysql-5.5.11-win32.msi /qn INSTALLDIR="C:/mysql"'', ExpandConstant(''{tmp}''), SW_HIDE, ewWaitUntilTerminated, iResultCode); if not FileExists(ExpandConstant(''{reg:HKLM/SOFTWARE/MySQL AB/MySQL Server 5.5,Location}/bin/mysql.exe'')) then begin MsgBox(''Something went wrong! Installation should be terminated'', mbInformation, MB_OK); Result := false; end; end; end;


Después de que instaló MySQL y lo inició, es fácil cargar un archivo de script MySQL.

El punto clave pasa el comando " source " al parámetro mysql.exe -e , por lo que podría cargar mi archivo de script. Pasar el nombre del guión con la señal "<" no funcionó para mí.

[Files] Source: "script.sql"; DestDir: "{tmp}"; Flags: deleteafterinstall; [Run] Filename: "{reg:HKLM/SOFTWARE/MySQL AB/MySQL Server 5.6,Location}/bin/mysql.exe"; / Parameters: "-u root -prootpassword -e ""source {tmp}/script.sql"""; / StatusMsg: "Loading MySQL Database Initial Data"; / Flags: runhidden waituntilterminated;


Logré encontrar una solución a este problema. En lugar de cargar la base de datos directamente desde el script INNO, escribí los comandos sql en un archivo por lotes y ejecuté el .bat desde el script.

Escriba esto en un documento de bloc de notas y guárdelo como loadDB.bat. La primera línea establece la ruta de su directorio a donde está instalado su mysql.exe. La siguiente línea crea una base de datos vacía. (No sé por qué pero no puedo obtener mysql para cargar el archivo de base de datos sin crear primero una base de datos vacía en el servidor) La última línea es el comando mysql para cargar la base de datos desde su base de datos , archivo sql.

cd / d C: / Archivos de programa / MySQL / MySQL Server 5.1 / bin

mysql -uroot -padmin -e "crear base de datos mydatabase;"

mysql -uroot -padmin mydatabase <"C: / database.sql"

Ahora, en su script INNO debajo de la sección [FILES], agregue el archivo .bat

Fuente: "ruta de acceso a archivo / loadDB.bat"; DestDir: "{app}"; Banderas: ignoreversion

Y debajo de la sección [RUN] ejecuta el .bat. Tenga en cuenta que esta línea debe ser la última en la sección [EJECUTAR] porque se debe ejecutar solo después de que se instale el servidor Mysql.

Nombre de archivo: "{app} / loadDB.bat"

Ahora compila y ejecuta la configuración.

Como nota al margen: no lo he intentado, pero tal vez si agrega los comandos mysql en .bat directamente en el script inno con los parámetros correctos, podría cargar la base de datos sin necesidad del archivo por lotes.

Espero que esto resuelva tu problema.