0

我不知道如何把它放在这里,我会尽力而为。请帮帮我

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

我所知道的只是在卸载补丁结束时,我正在通过执行 .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 退出。

4

1 回答 1

1

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

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

如果您没有使用高级选项并且不需要标准输入,那么您实际上不需要使用 3rd-party 插件:

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

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

除此以外:

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

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

于 2012-10-25T10:06:15.507 回答