为什么我的安装程序正在搜索另一个不存在的 MSI



我的安装程序最近在升级过程中开始崩溃。放下文件后,它会显示一个框,上面写着:

尝试读取文件时发生网络错误:C:\Users\user\AppData\Local\Temp\2\MyInstaller.msi

我确信此错误是正确的,因为我们从未MyInstaller.msi运送过文件。我Package.msi发货,使用自定义引导程序作为MyInstaller.exe引导它,然后使用MyInstaller.exe调用msiexec /i Package.msi

这一直很有效,直到最近Package.msi开始失败,而显然是在试图寻找MyInstaller.msi .为什么要这样做?Wilogutl.exe只说"标准或自定义操作似乎失败了",这不是很有帮助。

我仍然不确定为什么会发生这种情况,但我找到了一个可能相关的日志部分:

MSI (c) (D0:54) [09:03:23:868]:正在输入 CMsiConfigurationManager::SetLastUsedSource。

MSI (c) (D0:54) [09:03:23:869]: 指定的源已在列表中。

MSI (c) (D0:54) [09:03:23:869]:用户策略值"搜索顺序"为"nmu"

MSI (c) (D0:54) [09:03:23:869]:计算机策略值"禁用浏览"为 0

MSI (c) (D0:54) [09:03:23:869]:计算机策略值"允许锁定浏览"为 0

MSI (c) (D0:54) [09:03:23:869]: 允许添加新源。

MSI (c) (D0:54) [09:03:23:869]: 属性更改: 添加包代码更改属性。其值为"1"。

MSI (c) (D0:54) [09:03:23:869]:从配置数据中检索的程序包名称:"我的安装程序.msi"

MSI (c) (D0:54) [09:03:23:869]: 注意: 1: 2205 2:3: 错误

MSI (c) (D0:54) [09:03:23:871]:注意:1:2262 2:管理属性 3:-2147287038

MSI (c) (D0:54) [09:03:23:871]:计算机策略值"禁用 Msi"为 1

MSI (c) (D0:54) [09:03:23:871]:计算机策略值"始终安装提升"为 0

另一个奇怪之处:添加/删除程序显示已安装旧版本,我的二进制文件确认了这一点。但是,如果我尝试直接运行新版本的 MSI,则会收到错误消息:

已安装此产品的另一个版本。安装此版本无法继续...

开发过程中,当我尝试安装具有相同版本但不同包代码的 MSI 时,我经常收到此错误消息。但是,Orca表示新的MSI绝对是更高的版本。

关于您关于相同版本但不同包代码的最后评论,该版本可能有些无关紧要。ProductCode 定义了产品已安装,因此尝试安装具有相同 ProductCode(但版本不同)的其他内容将导致该消息。PackageCode 很重要,但大多数工具只是在每次构建时生成一个新工具,因此这通常不是问题。因此,如果您真的在进行升级,您应该在前三个字段中有一个WiX主要升级元素和新的产品代码和产品版本增量。

如果这是在客户端系统上,他们是否可以安装该其他产品?您是否安装了可能与其他产品共享的任何相当常见的项目(可能来自合并模块)?例如,如果您要安装一个常用共享文件(水晶报告、C++ DLL 等),其组件 ID 会破坏共享,那么您可能会触发 Windows 尝试通过转到另一个 MSI 文件来解决共享版本问题。顺便说一下,当实际安装的文件的版本与 MSI 文件的文件表中的版本不同时,当 MSI 安装使用"版本谎言"时,这可能是一个常见问题。此外,请查看 Windows 事件日志、应用程序、MsiInstaller 条目,因为可能有一个条目的组件 ID 被列为修复的触发器,并从其包含的产品 MSI 文件中获取文件。

只是为了让事情更加混乱,1 的 DisableMSI 策略会阻止某些安装(请参阅文档)。

在我自己不知道的情况下,Windows 会缓存最初用于安装产品的 MSI 的文件名。因此,当我运行旧版本时,我的引导程序会卸载 MSI 作为MyInstaller.msi,并安装我的产品。

我最近更改了引导程序以将其卸载为Package.msi.现在,在这些神秘的条件下,Windows 将文件名缓存为 MyInstaller.msi,并在运行过程中尝试Package.msi尝试引用不再存在的MyInstaller.msi

我不知道它为什么要这样做或如何让它停止,但我已经恢复了我的更改,并再次从引导程序中卸载我的 MSI 作为MyInstaller.msi.

最新更新