Wix 重新缓存的msi仍在运行旧的自定义操作

Wix 重新缓存的msi仍在运行旧的自定义操作,wix,windows-installer,wix3.5,Wix,Windows Installer,Wix3.5,我已对msi文件中的自定义操作进行了更改,以便在windows服务停止或停止挂起时不尝试停止该服务。但是,在使用msiexec/fv mymsi.msi重新缓存msi后,当运行到下一版本的主要升级(该版本还具有更正的服务停止自定义操作)时,详细日志显示,即使缓存的msi已更新,旧的自定义操作代码仍在运行。我甚至对缓存的msi与重新缓存中使用的msi进行了二进制比较 我做错了什么。如果旧的自定义操作仍在运行,则表示以下两种情况之一: 新的MSI逻辑不正确,仍在运行自定义操作 重新设置/重新安装不起

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


我做错了什么。

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

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

  • 重新设置/重新安装不起作用

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

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

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

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

    试试msiexec/I foo.msi REINSTALL=ALL REINSTALLMODE=vomus您为什么有停止服务的自定义操作?这就是ServiceControl元素/表的用途。我将尝试msiexec/I reinstall=all reinstallmode=vomus。我没有使用ServiceControl元素。我有一个创建、启动、停止和删除的服务。我还有另一个我刚刚启动和停止的程序(它是由第三方批处理文件创建和删除的)。您的源文件中是否有硬编码的程序包GUID?在完全卸载后,我在安装时收到Windows Installer错误2753。在安装之前运行repair/run from source/recache(/fv),可以防止我出现2753错误。