检查Windows安装程序互斥可用性

时间:2012-04-13 15:59:05

标签: c# windows-installer

在我的一个集成测试中,我有两个线程卸载然后安装程序但是按顺序运行它们会产生错误Failed to grab execution mutex. System error 258.

要解决这个问题,我必须在卸载后睡觉。我试着检查msiexec进程是否正在运行但是一直有2-3个因此它不是一个好的指标。有没有办法检查msiexec执行互斥锁是否可用?

1 个答案:

答案 0 :(得分:7)

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