我不知道如何把它放在这里,我会尽我所能。请帮帮我
我有一个补丁程序安装程序,可按预期安装和卸载。但是从程序文件中卸载补丁后,我尝试卸载其他软件。我收到一条流行消息说让卸载完成卸载。
所有我想到的是在卸载我的补丁的最后,我通过执行.exe文件开始一个过程。我的卸载程序等待该进程退出,我不想退出。
我有其他选择是在卸载补丁后强制用户重启,我不希望这样做。
我用/ ASYNC尝试过Exec,ExecDos和ExecCmd,但我仍然看到同样的问题。
尝试1
ExecShell open "$INSTDIR\system\teven.exe"
尝试2
ExecDos::exec /NOUNLOAD /ASYNC "$INSTDIR\system\teven.exe" ""
Pop $0
ExecDos::isdone /NOUNLOAD $0
任何人都可以帮我解决这个问题。如何启动teven.exe并使其保持运行并使我的卸载程序不等teven.exe退出。
答案 0 :(得分:1)
如果在卸载程序完成后要执行其他操作,则必须强制卸载程序等待。从“添加/删除程序”卸载时,Windows甚至会强制等待卸载程序启动的所有子进程...
如果你想等待,为什么要使用/ ASYNC? (编辑:我想您不想等待?)ExecDos::isdone
不等待,只是检查,如果您想等待,请使用ExecDos::wait
。
如果你没有使用高级选项而且不需要stdin输入,那么你真的不需要使用第三方插件:
如果teven是一个控制台应用程序,并且您想要隐藏控制台窗口(并等待):
nsExec::Exec '"$INSTDIR\system\teven.exe"'
否则:
ExecWait '"$INSTDIR\system\teven.exe"'
如果您实际上不想等待,可以使用Exec
,但Windows在卸载时可能会强行等待......