18

如果需要安装,我正在尝试创建一个用于安装 .NET Framework 4.0 的包。我意识到有类似的问题,但所有答案都只是片段,并没有描述它们进入什么文件,以及它们是如何导入到 .wxs 文件中的。

这就是我在 Bundle.wxs 文件中的内容。我收到有关多个条目部分的编译器警告。

错误 2 找到多个条目部分“{CF06625F-7B6B-4B6E-A24E-FDDCA7CFFFF4}”和“{0D1EE60A-FC4F-4083-8B1E-311E75A67B4C}”。单个目标中只能存在一个条目部分。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Bundle UpgradeCode="{C6FF478E-C3DA-4D78-929D-24C3F3307356}" Version="4.0">
    <Chain>
      <PackageGroupRef Id="NetFx40Redist"/>
    </Chain>
  </Bundle>
</Wix>

WiX 页面上的大多数链接都已损坏,并且没有提及要在 Bundle 标签上使用的任何属性,并且似乎互换了 Package/Product。我在 Wix 页面上找不到关于为 Bundles 设置 GUID 的内容。这是 Wix 3.7 的新功能吗?

http://wix.sourceforge.net/manual-wix3/install_dotnet.htm

  1. 如何使用预定义的 .NET 4.0 PackageGroupRef/PayloadGroupRef
  2. 它必须在 Bundle.wxs 中吗?它在哪里导入到我的主要 Product.wxs 中?
4

2 回答 2

23

该错误表明您的项目正在使用包含多个以下元素的文件进行构建:Product, Module, Patch, PatchCreation, Bundle。在您的情况下,听起来您将带有元素的文件添加Bundle到已经有Product元素的项目中。今天的 WiX 工具集中不支持这一点。您需要将Bundle元素放在单独的项目中。

因此,在创建引导程序和 MSI 时,您将拥有两个 .wixproj 文件。第一个 .wixproj 将包含您的Product信息。第二个 .wixproj 将包含您的Bundle信息,并具有对第一个 .wixproj 的项目引用,以便构建顺序正确。

于 2013-05-03T15:42:56.967 回答
10

Wix/Bundle元素是 Bootstrapper 项目的根。它与您的 Product.wxs 不在同一个项目中。在 Visual Studio 中,有一个用于新的 Wix Bootstrapper 项目的模板。你可能还没有创建一个。

然后在你的包的链中,你需要 .NET 和你的应用程序的 MSI,如示例中所示。要使用 NetFx40Web,您必须参考 WixNetfxExtension。引用其他 Wix 项目的 Wix 项目具有预定义的变量,因此您可以使用它们的属性,例如 TargetPath。该示例假定此 Bootstrapper 项目引用名为 MyApplicationSetup 的 Setup 项目。

<Chain>
    <PackageGroupRef Id="NetFx40Web"/>
    <MsiPackage Id="MyApplication" SourceFile="$(var.MyApplicationSetup.TargetPath)"/>
</Chain>
于 2013-05-03T14:49:19.227 回答