安装程序退出后,卸载仍在运行

时间:2012-10-25 01:18:59

标签: nsis

我不知道如何把它放在这里,我会尽我所能。请帮帮我

我有一个补丁程序安装程序,可按预期安装和卸载。但是从程序文件中卸载补丁后,我尝试卸载其他软件。我收到一条流行消息说让卸载完成卸载。

所有我想到的是在卸载我的补丁的最后,我通过执行.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退出。

1 个答案:

答案 0 :(得分:1)

如果在卸载程序完成后要执行其他操作,则必须强制卸载程序等待。从“添加/删除程序”卸载时,Windows甚至会强制等待卸载程序启动的所有子进程...

如果你想等待,为什么要使用/ ASYNC? (编辑:我想您不想等待?)ExecDos::isdone不等待,只是检查,如果您想等待,请使用ExecDos::wait

如果你没有使用高级选项而且不需要stdin输入,那么你真的不需要使用第三方插件:

如果teven是一个控制台应用程序,并且您想要隐藏控制台窗口(并等待):

nsExec::Exec '"$INSTDIR\system\teven.exe"'

否则:

ExecWait '"$INSTDIR\system\teven.exe"'

如果您实际上不想等待,可以使用Exec,但Windows在卸载时可能会强行等待......