2012-04-13 110 views
3

在我的集成測試之一,我有兩個線程先卸載再安裝一個程序,但按順序運行時產生錯誤Failed to grab execution mutex. System error 258.檢查Windows安裝程序互斥可用性

爲了解決這個問題我以後睡覺卸載。我試着檢查msiexec進程是否正在運行,但始終保持2-3次,因此這不是一個好的指標。有沒有辦法檢查msiexec執行互斥鎖是否可用?

回答

5
bool msiIsRunning = false; 
    try 
    { 
     using(var mutex = Mutex.OpenExisting(@"Global\_MSIExecute")) 
     { 
      msiIsRunning = true; 
     } 
    } 
    catch (Exception) 
    { 
     // Mutex not found; MSI isn't running 
    } 
+0

謝謝,這真的很有用。 – 2012-04-13 20:52:43

+0

順便說一句,請記住,技術上微星並不總是一項服務。 Win 9x平臺不支持Windows服務。 – 2012-04-13 21:25:15