参数不工作的 ExecWait 和 MySQL
ExecWait and MySQL with Parameters Not Working
如果我在命令提示符下 运行 它有效:
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 脚本中,我看到一个命令提示符 window 弹出但很快消失并且没有创建数据库:
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传递参数不正确吗?
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 [=10=]
pop
DetailPrint "Exit code=[=10=]"
DetailPrint "Output=||"
SectionEnd
或者您可以使用 ExecDos plug-in.
如果我在命令提示符下 运行 它有效:
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 脚本中,我看到一个命令提示符 window 弹出但很快消失并且没有创建数据库:
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传递参数不正确吗?
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 [=10=]
pop
DetailPrint "Exit code=[=10=]"
DetailPrint "Output=||"
SectionEnd
或者您可以使用 ExecDos plug-in.