当前位置: 首页 > 面试题库 >

如何在inno setup中进行mysql的静默安装?

澹台权
2023-03-14
问题内容

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

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;


 类似资料:
  • 我正在Inno安装程序中开发一个安装文件。当用户选择“自定义”时,它有3个不同的可选组件要安装。 它工作正常,但当传递参数时,不会安装任何组件。我想是因为没有检查组件。 …这是相关的代码片段: 我需要在传递 / 或 参数时默认安装三个组件之一(组件“Usuario”)。 我想我必须使用,但我不知道在哪里。事实上,我尝试在部分添加,但没有任何反应: 在”部分中都没有: 以下是我需要的: < Li >

  • 问题内容: 如何在Linux命令行上没有提示的情况下安装anaconda / miniconda? 默认情况下,是否可以通过某种方式来同意条款和条件,建议的安装位置等? 问题答案: 可以通过实现 只能通过flag 看到命令行用法,而不能看到,所以我错过了。 要将anaconda安装到另一个位置,请使用以下选项:

  • 本文向大家介绍教你如何静默安装ORACLE,包括了教你如何静默安装ORACLE的使用技巧和注意事项,需要的朋友参考一下 由于本次的实验我是将上次的虚拟机直接拷贝过来,然后将里面图形化界面安装好了的oracle给删除,再次重新安装,所以这里要修改一些配置。 首先修改的是我们的IP地址 完成后我们修改一下hosts文件,将里面的ip地址给修改一下 接着我们删除上次安装过的ORACLE文件 进入root

  • 问题内容: 我想在MySQL中进行完全外部联接。这可能吗?MySQL是否支持完全外部联接? 问题答案: 您在MySQL上没有FULL JOINS,但是可以肯定地模拟它们。 对于从该SO问题记录下来的代码SAMPLE,您可以: 有两个表t1,t2: 上面的查询适用于FULL OUTER JOIN操作不会产生任何重复行的特殊情况。上面的查询取决于set运算符,以删除查询模式引入的重复行。我们可以通过对

  • 问题内容: 我有许多记录需要输入到表中。在查询中执行此操作的最佳方法是什么?我是否应该进行循环并在每次迭代中插入一条记录?或者,还有更好的方法? 问题答案: 从MySQL手册 使用VALUES语法的INSERT语句可以插入多行。为此,请包括多个列值列表,每个列值括在括号内并用逗号分隔。例:

  • 问题内容: 我如何返回在MySQL中实际上是“连续的” GROUP BY。换句话说,GROUP BY是否尊重记录集的顺序? 例如,从下表中,col1是唯一的有序索引: 返回: 但我需要返回以下内容: 问题答案: 采用: 这里的关键是创建一个允许分组的人为值。 以前,更正了Guffa的答案: