解决方案是使用CMP_WaitNoPendingInstallEvents函数。示例here。
您可以使用Process查看是否已有另一个dpinst实例正在运行。
Process[] processlist = Process.GetProcesses();
foreach(Process p in processlist){
if (p.ProcessName.StartsWith("dpinst"))
...
}
我敢打赌,这是不必要的:你试图避免的场景已经由dpinst / Windows本身管理。