【问题标题】:Is it possible to target Windows Installer 3.0 with the Visual Studio 2012 compiler?是否可以使用 Visual Studio 2012 编译器针对 Windows Installer 3.0?
【发布时间】:2013-06-11 10:53:24
【问题描述】:

最近,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。合并安装程序版本高于其要合并到的产品的模块可能会导致由此产生的微星。您必须将 Package/@InstallerVersion 属性设置为 405 或更高才能将此合并模块合并到您的产品中。

【问题讨论】:

    标签: visual-studio-2012 wix windows-xp windows-installer


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗯。有趣的想法,我不知道这是可能的。
    • 强烈建议链接 prereq MSI。第三方合并模块充其量几乎总是有问题。
    • 是的,做链。企业应用程序打包者通常需要从包中删除运行时和合并模块以强制执行他们自己的版本。经常。只是节省时间和精力来链接而不是嵌入,因为它们更容易移除。
    【解决方案2】:

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

    例如。适用于 3.0 Windows 安装程序

    <Package InstallerVersion="300" />
    

    【讨论】:

    • 这就是我们目前所做的。问题是合并模块与 300 不兼容。我将更新问题以使其更清晰。
    猜你喜欢
    • 2012-10-19
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    相关资源
    最近更新 更多