Эта директива используется для предотвращения установки новой версии приложения во время его работы, а также предотвращения удаления запущенного приложения. В ней указываются имена одного или нескольких именованных мьютексов (несколько мьютексов разделяются запятыми), которые программа установки и удаления будет проверять во время запуска. Если хоть один из них существует, будет выдано следующее сообщение: "Обнаружен запущенный экземпляр [AppName]. Пожалуйста, закройте все экземпляры приложения, затем нажмите «OK», чтобы продолжить, или «Отмена», чтобы выйти." Значение может содержать константы.
Для использования этой директивы в приложение требуется добавить код, который создаст мьютекс с именем, указанным в этой директиве. Примеры создания мьютекса в Delphi, C и Visual Basic показаны ниже. Этот код должен быть выполнен во время запуска приложения.
Delphi:
CreateMutex(nil, False, 'MyProgramsMutexName');
C:
CreateMutex(NULL, FALSE, "MyProgramsMutexName");
Visual Basic (написал Peter Young):
'Place in Declarations section: Private Declare Function CreateMutex Lib "kernel32" _ Alias "CreateMutexA" _ (ByVal lpMutexAttributes As Long, _ ByVal bInitialOwner As Long, _ ByVal lpName As String) As Long 'Place in startup code (Form_Load or Sub Main): CreateMutex 0&, 0&, "MyProgramsMutexName"
Нет никакой необходимости явно уничтожать объект мьютекса по завершении работы приложения, система сделает это автоматически. Также не рекомендуется этого делать, потому что в идеале объект мьютекса должен существовать до полного завершения процесса.
Обратите внимание, что сравнение имён мьютексов в Windows выполняется с учётом регистра.
Чтобы указать мьютекс с именем, содержащим запятую, экранируйте запятую обратной косой чертой.
Дополнительные сведения о мьютексах смотрите в разделе "CreateMutex" справки MS SDK.
AppMutex=MyProgramsMutexName,Global\MyProgramsMutexName