5

我已对我的 msi 文件中的自定义操作进行了更改,以在服务停止或停止挂起时不尝试停止 Windows 服务。但是,在使用 msiexec /fv mymsi.msi 重新缓存 msi 后,当运行到下一个版本的主要升级(也具有更正的服务停止自定义操作)时,详细日志记录显示旧的自定义操作代码仍在即使缓存的 msi 已更新,也运行。我什至对缓存的 msi 与重新缓存中使用的 msi 进行了二进制比较。

我在这里做错了什么。

4

2 回答 2

5

如果旧的自定义操作仍在运行,则意味着以下两种情况之一:

  1. 新的 MSI 逻辑不正确,仍在运行自定义操作。

  2. 重新缓存/重新安装不起作用。

要重新缓存/重新安装,请确保您的 MSI 与旧 MSI 基本相同(相同的 ProductCode/Upgradecode 等),但更新的自定义操作除外。然后做:

msiexec /fv new.msi /l*v log.txt

这将覆盖旧的 MSI 并使用新的 MSI 进行修复(并为您提供日志文件以防出现任何问题)。

于 2013-06-22T21:44:22.440 回答
2

在我的情况下,它是 %windir%\Installer 中我的 MSI 的缓存副本以及系统注册表中的相应键(通过 HKLM 和 HKCR 中的 GUID 找到它们)。

于 2015-05-21T09:24:52.747 回答