probably at the beach
probably at the beach

Reputation: 15227

check for windows installer mutex availability

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

Answers (1)

Christopher Painter
Christopher Painter

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

Related Questions