用于安装.NET的WiX软件包

时间:2013-05-03 13:32:43

标签: .net wix

如果需要安装,我正在尝试创建用于安装.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标记上使用的属性的任何内容,并且似乎要交换包/产品。我在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?

2 个答案:

答案 0 :(得分:19)

该错误表示您的项目正在构建包含多个元素的文件:ProductModulePatchPatchCreation,{{1} }。在您的情况下,听起来您已将具有Bundle元素的文件添加到已具有Bundle元素的项目中。今天的WiX工具集不支持这种功能。您需要将Product元素放在单独的项目中。

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

答案 1 :(得分:10)

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

然后在你的bundle的链中,你将需要.NET和你的应用程序的MSI,如例子中所示。要使用NetFx40Web,您必须引用WixNetfxExtension。引用其他Wix项目的Wix项目具有预定义变量,因此您可以使用其属性(如TargetPath)。该示例假定此Bootstrapper项目引用了名为MyApplicationSetup的安装项目。

<Chain>
    <PackageGroupRef Id="NetFx40Web"/>
    <MsiPackage Id="MyApplication" SourceFile="$(var.MyApplicationSetup.TargetPath)"/>
</Chain>