检查Windows安装程序mutex的可用性

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

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

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