mysql 在 nsi 中静默安装和配置

mysql 在 nsi 中静默安装和配置

我想在 NSI 中静默安装 MySQL 5.0。我在 NSI 中尝试了以下代码:

  ExecWait 'msiexec /i "$INSTDIR\mysql-essential-5.0.27-win32.msi" /qn'
  ExecWait "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlinstanceconfig.exe -i -q ServiceName=MySQL RootPassword=root ServerType=DEVELOPMENT    DatabaseType=MYISAM Port=3306 RootCurrentPassword=root"

这将安装 MySQL,但不对其进行配置。

我想配置它

  • 密码=root
  • 端口=3306
  • 服务名称=Mysql
  • 并启用远程机器的root访问

编辑1

现在正在配置...

对于作为 localhost 或 127.0.0.1 的服务器主机,它可以工作,但是对于网络上的其他系统的 ip 地址则不适用。

如果我尝试从网络上的 PC 访问静默安装的数据库上的数据库,我会收到以下错误:

在此处输入图片描述

我认为这是因为我需要传递一些参数并启用远程机器的 root 访问权限。

答案1

尝试引用mysqlinstanceconfig.exe文件名,如下所示:

ExecWait 'msiexec /i "$INSTDIR\mysql-essential-5.0.27-win32.msi" /qn'
ExecWait "$\"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlinstanceconfig.exe$\" -i -q ServiceName=MySQL RootPassword=root ServerType=DEVELOPMENT    DatabaseType=MYISAM Port=3306 RootCurrentPassword=root"

原因是可执行文件名称的路径中有空格。该路径必须用引号括起来,这样它才能形成单个路径。

答案2

如果传递的命令包含空格,则整个命令ExecWait都应该括在里面。''

参数里面参数中包含空格时,需要用括号括起来""。您可以查看一个完美示例,了解如何操作正确地在您第一次致电时ExecWait

注意,如果命令中有空格,则应将其放在引号中以将其与参数分隔开。例如:ExecWait '"$INSTDIR\command.exe" 参数'。

来源:文档

相关内容