Reputation: 15227
In one of my integration tests, I have two threads that uninstall then install a program but when run in sequence they generate an error Failed to grab execution mutex. System error 258.
To get around this I have to sleep after the uninstall. I tried checking if the msiexec process was running but there were consistently 2-3 so it's not a good indicator. Is there a way to check if the msiexec execution mutex is available?
Upvotes: 8
Views: 8439
Reputation: 55620
bool msiIsRunning = false;
try
{
using(var mutex = Mutex.OpenExisting(@"Global\_MSIExecute"))
{
msiIsRunning = true;
}
}
catch (Exception)
{
// Mutex not found; MSI isn't running
}
Upvotes: 12