答案1
Windows Installer 运行时在 (卸载) 安装的某些阶段获取具有名称的全局互斥锁_MSIExecute
。一个互斥锁一次只能由一个线程拥有;对于全局互斥锁,即整个系统上的一个线程。任何后续获取互斥锁所有权的尝试都将失败,直到当前所有者释放它。
互斥锁是 Windows 内核中的临时对象。它在任何时候都不是磁盘上的文件。如果当前拥有互斥锁的线程退出而未明确释放它,则会自动释放它。
这与某些程序用来防止程序的多个实例运行的机制相同。
回答另一个隐含的问题哪个进程持有该互斥锁,您可以使用 Microsoft/Sysinternals 等工具进程探索器或者处理查找互斥锁。在 Process Explorer 中,它应该出现在句柄搜索 (Ctrl+F) 中。
找到进程后,您需要决定如何处理它。最安全选项通常是等待,但如果它不知何故卡在(卸载)安装步骤中,您可能别无选择,只能将其终止。当然,终止它可能会产生后果,例如留下半(未)安装的程序 - MSI 应该保证回滚,但当执行回滚的进程被终止时,这些就很难了!也很难判断它是否真的卡住了,因为有些步骤可能需要很长时间才能完成。
也可以看看: