2010-08-17 86 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