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.