mysql - 如何在 Inno Setup 中静默安装 MySQL?

标签 mysql inno-setup

我会为我的 Java 应用程序创建一个安装程序。它使用 MySQL 数据库。所以我的程序安装必须包括MySQL server 5.5的安装、服务器的配置和我的数据库的加载。我使用 Inno Setup 来执行此操作,但我发现了一些问题。我找到了这段代码,但它有点旧。

[Files]
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 但没有任何变化。

有人可以帮助我吗?

最佳答案

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

关于mysql - 如何在 Inno Setup 中静默安装 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18827660/

相关文章:

mysql - 对所有值进行计数并使用 count 进行分组

php - 在 CakePHP 中将数据保存到数据库中的 2 个表中

mysql - 如何将字符串转换为整数并比较指定数字使用mysql?

inno-setup - 如何在安装过程中将嵌入式存档解压缩到磁盘

windows - InnoSetup - 为默认子项添加值?

installation - 如何在 Inno 安装脚本的 [Code] 部分设置状态消息?

inno-setup - 完成某个页面后,有没有办法在 Inno Setup 中提取 .zip 文件?

php - 如何在不明确的列名上产生错误消息?

mysql - shell 脚本中 csv 上传出现意外结果

inno-setup - 如何在 inno setup 中为 TNewStaticText 中的文本添加不同的颜色