2017-06-12 116 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