The _MSIExecute Mutex is set only while processing the InstallExecuteSequence table, AdminExecuteSequence table, or AdvtExecuteSequence table.
Because two installations cannot be run in the same process, an attempt to call the installer's application programming interface (API) returns ERROR_INSTALL_ALREADY_RUNNING (1618) in two cases:
- While the _MSIExecute Mutex is set.
- While the current process is processing the InstallUISequence table or AdminUISequence table.
See the Event Logging messages for information about what application is being installed.
In cases where it is impractical to return an ERROR_INSTALL_ALREADY_RUNNING error, you can retrieve the current status of the Windows Installer service before attempting to start the installation by using the QueryServiceStatusEx function. The Windows Installer service is currently running if the value of the dwControlsAccepted member of the returned SERVICE_STATUS_PROCESS structure is SERVICE_ACCEPT_SHUTDOWN.
Windows Installer 2.0: Not supported. The use of the QueryServiceStatusEx function to retrieve the current status of the Windows Installer service requires Windows Installer version 3.0 or greater.