Inno Setup无法在卸载过程中删除组件,原因是我的程序仍在运行并且无法删除可执行文件。在允许卸载继续之前,我如何检查它是否正在运行?
最佳答案
检查这些
Inno Setup: Detect instances running in any user session with AppMutex
Inno Setup: Is application running?
Inno Setup: Detect if an application is running
有几种方法。如果您的程序定义了互斥锁
[Setup]
AppMutex=MyMutexName
或
Code
部分中的指定互斥锁function CheckForMutexes (Mutexes: String): Boolean;
您也可以使用
function FindWindowByClassName (const ClassName: String): Longint;
通过类名获取窗口句柄并发送消息。
或以名称命名
function FindWindowByWindowName (const WindowName: String): Longint;
或者您针对此特定用例使用几个DLL文件之一
或者阅读后自己做
How To Terminate an Application "Cleanly" in Win32
How To Enumerate Applications Using Win32 APIs(此链接到德语版本,因为某些原因我找不到英语版本的KB175030
或尝试Google翻译的KB175030-DE版本
KB175030 DE -> EN