我知道这是一个较旧的线程,但我遇到了解决方案未涵盖的类似问题。就我而言,我有一个 DLL,它实际上是比其前身版本低的版本。此 DLL 永远不会出现在升级安装中。跑步
msiexec /i myproduct.msi /l*vx install2.log
并检查日志显示该文件从未安装过。它只是没有作为安装的文件之一出现在日志中。MSI 明确包含该文件,最好的证据是修复会放置该文件。此外,使用各种工具分解 MSI 显示文件存在。在干净的机器上直接安装总是有效的。
这没有帮助:
msiexec /i myproduct.msi REINSTALL=ALL REINSTALLMODE=amus /l*vx install3.log
我正在使用 Wix 构建 MSI,并且多年来我一直在使用这个脚本。最近我们将脚本设置为完全删除 5.3 版本中的旧目录。这适用于 5.2 -> 5.3 和 5.3 -> 5.4 升级。但在 5.5 版本中,所有 DLL 都使用新版本的 DLL 重新构建。DLL 项目托管在 GitHub 中。此特定 DLL 的构建脚本设置为“10.0.0.{git rev-list --count HEAD}”的程序集版本。该项目已被移动,导致 HEAD 计数从 444 变为 30。
wixscript include 有这个,
define ProductGuid = "{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}"
所以我们会在每个版本中更新产品 guid(而不是产品升级 guid)。
补救措施是稍微更改此 dll 的构建脚本以将程序集版本设置为“10.0.0”。1 .{git rev-list --count HEAD}',大概被视为更高编号的版本。
为什么这有效,我无法解释。