2016-01-29 4 views
0

Использование Inno Setup вместе с AppMutex прекрасно работает - при запуске установки и мьютексе все же пользователь должен закрыть это приложение.AppMutex с установкой Inno: Подождите несколько секунд перед запросом

Но следующий вопрос: Есть ли способ сказать Inno Setup ждать 2-3 секунды, если программа закроется, прежде чем показывать пользователю это приглашение?

Причина в том, что я запускаю Inno Setup из самой программы для целей автоматического обновления. Непосредственно после запуска файла установки программа закрывается, но, очевидно, это занимает слишком много времени (по крайней мере, на некоторых системах). Поэтому Inno Setup показывает это - в данном случае - бесполезный диалог для пользователя, хотя программа уже закрывается.

Поэтому я хотел бы сделать так, чтобы Inno Setup ожидал 2-3 секунды, и только если мьютекс все еще существует после этого времени, он должен отображать приглашение пользователю.

Есть ли способ сделать это?

+0

Вы в основном получили ответ на этот вопрос уже в вашем предыдущем посте [Использование AppMutex с бесшумной настройки Inno] (http://stackoverflow.com/д/22932815/850848). –

ответ

2

С таким требованием вы не можете использовать встроенный AppMutex directive.

Вы должны реализовать мьютекс проверить себя с помощью CheckForMutexes function:

[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; 
+0

Спасибо, Мартин, это очень помогло! –

Смежные вопросы