将Inno Setup和AppMutex
一起使用可以正常工作 - 当设置启动并且互斥锁仍然退出时,系统会提示用户关闭此应用程序。
但是以下问题: 有没有办法告诉Inno安装程序在显示用户此提示之前程序自行关闭2-3秒?
原因是我从程序本身运行Inno Setup以进行自动更新。在执行安装文件之后,程序直接关闭,但显然需要太长时间(至少在某些系统上)。因此,Inno Setup会向用户显示这个 - 在这种情况下 - 无用的对话框,尽管程序已经关闭了。
因此,我想要完成Inno Setup等待2-3秒,并且只有在该时间之后互斥锁仍然存在时,它才会向用户显示提示。
有没有办法实现这个目标?
答案 0 :(得分:2)
根据此要求,您无法使用内置AppMutex
directive。
[Code]
const
MutexName = 'MutexName';
function InitializeSetup: Boolean;
var
WaitInterval: Integer;
Wait: Integer;
begin
Wait := 3000;
WaitInterval := 250;
while (Wait > 0) and CheckForMutexes(MutexName) do
begin
Log('Application is still running, waiting');
Sleep(WaitInterval);
Wait := Wait - WaitInterval;
end;
while CheckForMutexes(MutexName) do
begin
if MsgBox(
FmtMessage(SetupMessage(msgSetupAppRunningError), ['MyApplication']),
mbError, MB_OKCANCEL) <> IDOK then
begin
Abort;
end;
end;
Result := True;
end;