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?
bool msiIsRunning = false;
try
{
using(var mutex = Mutex.OpenExisting(@"Global\_MSIExecute"))
{
msiIsRunning = true;
}
}
catch (Exception)
{
// Mutex not found; MSI isn't running
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With