有没有办法强制释放已删除的服务句柄Windows 10?

问题描述

我正在尝试使用Windows Installer(MSI / msiexec)升级由非MSI软件包安装的产品。

我的MSI使用自定义操作DLL执行另一个软件包的卸载程序,然后执行“常规” msi安装,包括安装和启动服务。

非MSI卸载程序会卸载服务,但是尽管该服务被标记为已删除,但其句柄保持打开状态,因此我的MSI安装该服务失败。直到msiexec退出,服务句柄才会释放。我曾经希望/期望在从旧程序包的卸载程序退出时释放服务句柄,或者在我自定义操作DLL返回时失败,但是在msiexec完成之前,该服务只是标记为已删除

我必须使用非MSI软件包的卸载机制,因此无法避免其服务卸载。

解决此问题的最佳方法是什么?如果可能的话,我不想强​​迫用户执行两个单独的过程,例如首先运行非MSI卸载,然后第二次安装MSI。那似乎不再是升级

有没有办法强制释放已删除的服务句柄?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)