Installation 删除文件后,如何延迟卸载的继续?

Installation 删除文件后,如何延迟卸载的继续?,installation,sleep,inno-setup,delay,uninstallation,Installation,Sleep,Inno Setup,Delay,Uninstallation,我的卸载脚本退出正在运行的应用程序,但是由于时间问题,它没有完全消失,因此下面的卸载删除部分不会删除{app}文件夹,因为它不是空的。如果我手动退出应用程序,然后运行卸载脚本,{app}文件夹会被删除 [删除] 名称:{app};类型:dirifempty 我想知道是否有人建议推迟删除{app}文件夹的尝试。我曾想过使用Inno安装程序的内置程序Sleep,但我不知道如何使用它以及在何处使用它,例如无法从[UninstallRun]部分调用它。还有其他建议吗?您可以钩住函数InitializeU

我的卸载脚本退出正在运行的应用程序,但是由于时间问题,它没有完全消失,因此下面的卸载删除部分不会删除{app}文件夹,因为它不是空的。如果我手动退出应用程序,然后运行卸载脚本,{app}文件夹会被删除

[删除] 名称:{app};类型:dirifempty

我想知道是否有人建议推迟删除{app}文件夹的尝试。我曾想过使用Inno安装程序的内置程序Sleep,但我不知道如何使用它以及在何处使用它,例如无法从[UninstallRun]部分调用它。还有其他建议吗?

您可以钩住函数InitializeUninstall:Boolean;或过程CurUninstallStepChangedCurUninstallStep:TUninstallStep;功能

这将在卸载开始前运行,您可以在此处进行检查以确保应用程序未运行。使用FindWindowByClassName或FindWindowByWindowsName

如果发现它正在运行,可以提示用户关闭应用程序。 当用户说它已关闭时,您可以调用Sleep,给它足够的时间关闭,然后再次检查以确保应用程序确实已关闭

如果应用程序在运行时创建互斥体,则可以使用CheckFormMutex 作为FindWindowXXX调用的替代方法

本问题涉及另一种选择:

不管检测方法如何,调用Sleep to wait都可以解决此问题