ExecWait和MySQL参数不起作用

时间:2018-02-12 00:19:02

标签: mysql nsis

如果我从命令提示符运行它,它可以工作:

C:\Program Files\MariaDB 5.5\bin>MySQL.exe -u root -p --password=xyz --port=3322 --protocol=TCP < "C:\temp folder\CREATE_database.sql"

所以我知道.sql脚本没问题。

但是在我的NSIS脚本中,我看到一个命令提示符窗口弹出但很快就消失了,并且没有创建数据库:

  ExecWait '"C:\Program Files\MariaDB 5.5\bin\mysql.exe" -u root -p --password=root --port=3322 --protocol=TCP < "C:\temp folder\CREATE_database.sql"'

我没有正确地将参数传递给MySQL.exe吗?

1 个答案:

答案 0 :(得分:2)

ExecWait只创建一个简单的进程,它不支持stdin / stdout重定向。

您可以使用cmd.exe作为帮助程序:

Section 
nsExec::ExectoStack 'cmd.exe /c if 1==1 "c:\path\to\myapp.exe" -param1 -param2 < "stdin file.txt"'
pop $0
pop $1
DetailPrint "Exit code=$0"
DetailPrint "Output=|$1|"
SectionEnd

或者您可以使用ExecDos plug-in