» Предотвращение множественности запуска

K.A.V.
www.oszone.net
22.02.2010
Автор: kotkovets
Последнее обновление: 18.12.2010

Данный пример предотвращает множественость запуска инсталлятора. Иногда такая необходимость возникает,
особенно когда инсталлятор работает безоконном интерфейсе и копия запущенного инсталлятора недопустима.
Естественно код пишем в функцию .OnInit
!include "MUI2.nsh"
!include "LogicLib.nsh"

!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

ShowInstDetails show
OutFile "Mutex.exe"
Name "CreateMutex"
Caption "CreateMutex test"

Function .OnInit
 System::Call 'kernel32::CreateMutexA(i 0, i 0, t "$(^Name)") i .r1 ?e'
 Pop $R0
 ${IfNot} $R0 == 0
   MessageBox MB_OK|MB_ICONEXCLAMATION "Одна копия $(^Name) уже выполняется."
   Abort
 ${EndIf}
FunctionEnd

Section
SectionEnd