我想在 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" 参数'。
来源:文档