6

最近,Microsoft 放弃了放弃对带有 Visual Studio 2012 Update 1 的 Windows XP 的支持的决定。我们的产品经理告诉我,我可以转而使用提供的 Visual Studio 2012 编译器:

  • 我们将继续支持我们的 Windows XP 客户。
  • 除了 Windows XP SP3 之外,我们不会引入任何额外的先决条件(因为我们与一些客户签订了这方面的合同)。

我尝试将我们的解决方案转换为使用 VC2012 XP 工具集,现在从代码的角度来看,一切都运行良好。但是,我们的 WiX 安装程序项目抱怨我们现在试图包含 VC2012 运行时合并模块并且这些仅支持 Windows Installer 4.5。此版本的 Windows Installer 在 Windows XP SP3 中不可用,因此这意味着我们的客户必须安装 Windows Installer 4.5 Redistributable 软件包才能安装我们的产品。

是否可以解决此问题并仍然以支持 Windows Installer 3.0 的方式使用这些合并模块?

所以我们目前正在设置:

<Package InstallerVersion="300" />

但是合并模块似乎需要我们设置:

<Package InstallerVersion="405" />

这意味着我们不能开箱即用地支持 Windows XP SP3。

这是来自 WiX 的错误:

警告 LGHT1104:合并模块“Microsoft_VC110_ATL”的安装程序版本为 405,高于产品的安装程序版本 300。合并安装程序版本高于其要合并到的产品的模块可能会导致生成的 msi 中的值无效. 您必须将 Package/@InstallerVersion 属性设置为 405 或更高,才能将此合并模块合并到您的产品中。

4

2 回答 2

7

随您的产品安装 Windows Installer 4.5。它适用于 Windows XP SP2 和 SP3。毕竟,VC 2012 运行时也不随 Windows XP 一起提供。

您可能会坚持认为您只能将您的产品安装为带有任何所需合并模块的MSI 。使用 WiX 的 Bootstrapper 项目(WiX 3.6 及更高版本),您可以轻松创建一系列安装程序并将它们捆绑到一个 EXE 文件中。引擎(称为Burn)也可以处理任何需要的重启。如果您安装了最新版本的 WiX,那么您已经看到了实际效果。

如果你走这条路,你也可以从你的 MSI 中删除合并模块,而是将所有VC 2012 运行时删除到你的链中。

于 2013-06-11T13:30:58.267 回答
0

您需要在Package元素中设置InstallerVersion属性以设置安装所需的 Windows 安装程序。

前任。适用于 3.0 Windows 安装程序

<Package InstallerVersion="300" />
于 2013-06-11T11:59:58.187 回答