2017-06-12 81 views
0

我试图执行:ExecWait NSIS与START/WAIT

ExecWait '"$SYSDIR\cmd.exe" /k "START" /WAIT ""c:\Program Files\MyDir\Uninstall.exe" -l "c:\Program Files\MyDir\Uninstall.log""'

当我尝试此:

ExecWait '"$SYSDIR\cmd.exe" /k "c:\Program Files\MyDir\Uninstall.exe" -l "c:\Program Files\MyDir\Uninstall.log""', 它的工作原理,但我需要关闭命令控制台。

然后我尝试用/ c替换/ k,但是ExecWait不会等待该命令完成以继续安装。 我想要启动的卸载程序不是NSIS安装程序,而是新的安装程序。

谢谢你的帮助!

回答

0

最后,我使用这个命令,它似乎工作:

`ExecWait "$SYSDIR\cmd.exe" /c ""c:\Program Files\MydDir\Uninstall.exe" -l "c:\Program Files\MyDir\Uninstall.log"" & echo. & echo. & pause` 
1

ExecWait总是等待孩子的过程,但它不等待孙子。

我不明白你为什么需要使用cmd.exe,它只有在你重定向标准输出时才有用,在这种情况下你不需要start /wait,因为你将执行一个控制台应用程序。

为什么你不能只使用ExecWait '"c:\Program Files\MyDir\Uninstall.exe" -l "c:\Program Files\MyDir\Uninstall.log"'

/k开关保持控制台打开,/c没有,这是唯一的区别,您仍然需要start /wait部分用于非控制台应用程序。

Start有傻报价处理,你可能需要做cmd.exe /c start "" /wait "c:\path\app.exe" "parameters"

+0

我不能用'ExecWait““C: \ Program Files \ MyDir \ Uninstall.exe“-l”c:\ Program Files \ MyDir \ Uninstall.log“''因为nsis忽略它。 – sovif

+0

我会尝试你的解决方案。 – sovif

+0

'cmd.exe/c start“”/ wait“c:\ path \ app.exe”“parameters”'与'ExecWait'相同'$ SYSDIR \ cmd.exe“/ c”c:\ Program Files \ MyDir \ Uninstall.exe“-l”c:\ Program Files \ MyDir \ Uninstall.log“”''' – sovif