在我的一个集成测试中,我有两个线程卸载然后安装程序但是按顺序运行它们会产生错误Failed to grab execution mutex. System error 258.
要解决这个问题,我必须在卸载后睡觉。我试着检查msiexec进程是否正在运行但是一直有2-3个因此它不是一个好的指标。有没有办法检查msiexec执行互斥锁是否可用?
答案 0 :(得分:7)
bool msiIsRunning = false;
try
{
using(var mutex = Mutex.OpenExisting(@"Global\_MSIExecute"))
{
msiIsRunning = true;
}
}
catch (Exception)
{
// Mutex not found; MSI isn't running
}