如果我从命令提示符运行它,它可以工作:
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吗?
答案 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。