2013-09-16 93 views
4

我会为我的java应用程序创建一个安装程序。它使用了一个mysql数据库,因此我的程序的安装必须包括mysql server 5.5的安装,服务器的配置和我的数据库的加载。我使用Inno成立这样做,但我发现一些问题。我发现这个代码,但它有点老如何在inno安装程序中执行mysql的无提示安装?

Filename: msiexec; Parameters: "/i mysql-5.5.11-win32.msi /qn INSTALLDIR=""C:\mysql"""; WorkingDir: C:\Users\Gabriele\Desktop\setup; StatusMsg: Sto installando Mysql 5.5.11; Flags: runhidden 

Filename: C:\mysql\bin\mysqld-nt.exe; Parameters: --install; WorkingDir: C:\mysql\bin; StatusMsg: Sto installando il Servizio MySQL; Description: Installing MySQL Service; Flags: runhidden 

Filename: net.exe; Parameters: start mysql; StatusMsg: Sto Avviando il Servizio MySQL; Description: Avvio Servizio MySQL; Flags: runhidden 


Filename: C:\mysql\bin\mysql.exe; Parameters: "-e ""insert into mysql.user(host,user,password) values ('localhost','root', PASSWORD('emmaus');"" -u root"; WorkingDir: {tmp}; StatusMsg: Configurazione del Server della Base di Dati; Flags: runhidden 

Filename: C:\mysql\bin\mysql.exe; Parameters: "-u root -h localhost -e ""create database ata"; 

Filename: C:\mysql\bin\mysql.exe; Parameters: "-e ""grant all privileges on ata.* to ata;"" -u root"; WorkingDir: {tmp}; StatusMsg: Configurazione Server Base di Dati; Flags: runhidden 


Filename: C:\mysql\bin\mysql.exe; Parameters: "-e ""flush privileges;"" -u root"; WorkingDir: {tmp}; StatusMsg: Configurazione Server Base di Dati; Flags: runhidden 


Filename: C:\mysql\bin\mysql.exe; Parameters: "-u root -h localhost -e ""use ata; source ata.sql;"; WorkingDir: {tmp}; StatusMsg: Caricamento base di dati; Flags: runhidden 

当我调试它在第一个语句后生成一个错误。在第二条指令中找不到指定的程序。我试图使用mysqld而不是mysqld-nt,但没有任何变化

有人可以帮助我?

+0

看起来你错过了'waituntilterminated'标志在你的第一行。第二行是在第一个过程之后,但在第一个过程结束之前。 – RobeN

+0

我把第一个语句中的waituntilterminated标志,但消息是:无法运行该文件:C:\ mysql \ bin \ misqld.exe createProcess失败。代码267 目录名无效 –

+0

并被安装到这个特定文件夹的mysql? – RobeN

回答

7
[Files] 
Source: "J:\mysql-5.5.11-win32.msi"; DestDir: "{tmp}"; Flags: nocompression dontcopy 

[Run] 
Filename: "{reg:HKLM\SOFTWARE\MySQL AB\MySQL Server 5.5,Location}\bin\mysqld.exe"; 
    Parameters: "--install"; WorkingDir: "{reg:HKLM\SOFTWARE\MySQL AB\MySQL Server 5.5,Location}\bin"; 
    StatusMsg: "Sto installando il Servizio MySQL"; 
    Description: "Installing MySQL Service"; 
    Flags: runhidden; Check: MySQL_Is 
;//and the rest of commands 

[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; 
+0

它不能正常工作:( –

+1

你得到任何错误?“不起作用”答案不是真的有用:( – RobeN

+0

总是相同的,C:\ Program Files文件(x86)\ MySQL \ MySQL服务器5.5 \ bin \ misql.exe createProcess失败代码267目录名无效 –

相关问题