2010-08-17 83 views
1

有沒有辦法確定是否有在C#中運行的活動安裝?例如,如果您一次啓動2個MSI(或setup.exes),其中一個人會說正在進行安裝。有沒有辦法在C#中做到這一點?說,一個自我重置的註冊表項(系統重置)或一個互斥體?檢查C#中的運行安裝#

+1

您可能可以使用MSI API來執行此操作。如果你不這樣做,那麼不能保證你的註冊表/互斥量不會被破壞。我相信Windows安裝程序API的最乾淨的包裝可在http://wix.sourceforge.net/獲得。 – 2010-08-17 23:05:51

回答

1

互斥量是要走的路。

bool isFirst; 
Mutex m = new Mutex(false, "MyMutex", out isFirst); 

如果isFirst爲false,則會有另一個進程在運行。至於名稱,如果你想要檢查多個會話(終端會話),然後將代碼更改爲類似。

Mutex m = new Mutex(false, "Global\\MyMutex", out isFirst); 
+0

沒錯,但是如果我還想看看Windows安裝程序是否正在運行呢? – Crypton 2010-08-18 18:59:36