我已对msi文件中的自定义操作进行了更改,以便在服务停止或停止挂起时不尝试停止Windows服务。但是,在使用msiexec / fv mymsi.msi重新缓存msi之后,当运行主要升级到下一个版本(也有更正的服务停止自定义操作)时,详细日志记录显示旧的自定义操作代码仍然存在即使缓存的msi已更新,也会运行。我甚至对缓存的msi与重新缓存中使用的msi进行了二进制比较。
我在这里做错了什么。
答案 0 :(得分:5)
如果旧的自定义操作仍在运行,则意味着以下两种情况之一:
新的MSI逻辑不正确,仍在运行自定义操作。
重新安装/重新安装无效。
要重新缓存/重新安装,请确保您的MSI与旧MSI基本相同(相同的ProductCode / Upgradecode等),但更新后的自定义操作除外。然后做:
msiexec /fv new.msi /l*v log.txt
这将覆盖旧的MSI并使用新的MSI进行修复(并在出现任何问题时提供日志文件)。
答案 1 :(得分:2)
在我的情况下,它是%windir%\ Installer中MSI的缓存副本以及系统注册表中的相应密钥(由HKLM和HKCR中的GUID找到)。