用于安装.NET的WiX包

用于安装.NET的WiX包,.net,wix,.net,Wix,如果需要安装.NET Framework 4.0,我正在尝试创建一个捆绑包来安装它。我意识到也有类似的问题,但所有的答案都只是片段,没有描述它们放在哪个文件中,以及如何导入到.wxs文件中 这是Bundle.wxs文件中的内容。我收到有关多个条目节的编译器警告 发现错误2多条目节“{CF06625F-7B6B-4B6E-A24E-FDDCA7CFFFF4}”和“{0D1EE60A-FC4F-4083-8B1E-311E75A67B4C}”。单个目标中只能存在一个入口段 <?xml vers

如果需要安装.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页面上找不到关于为bundle设置GUID的内容。这是WIX3.7的新功能吗

  • 如何使用预定义的.NET 4.0 PackageGroupRef/PayloadGroupRef
  • 它必须在Bundle.wxs中吗?它从何处导入到我的主产品.wxs

  • Wix/Bundle
    元素是引导程序项目的根。它与Product.wxs不在同一个项目中。在VisualStudio中,有一个用于新Wix引导程序项目的模板。您可能还没有创建一个

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

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

    该错误表示您的项目正在使用包含以下元素之一以上的文件生成:
    产品
    模块
    补丁
    补丁创建
    捆绑
    。在您的例子中,听起来像是您将一个包含
    Bundle
    元素的文件添加到了一个已经包含
    产品
    元素的项目中。今天的WiX工具集中不支持这一点。您需要将
    Bundle
    元素放在一个单独的项目中


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

    好的,因此我将为捆绑包创建一个单独的项目。一个捆绑包可以有多个安装程序,对吗?我的链可能有.NET3.5、.NET4.0、SQLServer安装程序等等。是的,没错
    Bundle
    是包的
    集合
    +1-找不到任何关于必须参考/创建2个Wix项目的参考/信息。是的,我没有使用VS的Bootstrapper proj,也没有意识到这一点。我假设MsiPackage Id是指我的主安装程序项目的包Id?我对此感到困惑,因为我的软件包没有ID,也没有对Msi的引用。我用一个捆绑文件创建了我的proj,正如您上面所说的,只是我想使用“NetFx40Redist”作为软件包引用。EXE是构建的,但它大约有1MB。我希望它与.NET4安装文件相邻,就像在VisualStudio部署项目中一样。我不确定它是否真的拉了那个包。WiX工具集模式非常一致:Id属性为元素提供了唯一的名称,元素可以引用这些名称,名称以Ref结尾。因此,MsiPackage Id是您为SourceFile指向的包提供的任意名称。在引导程序的上下文中,“package”指任何类型的安装程序,“msi”是Windows安装程序包的昵称。您的WiX安装项目创建了一个msi文件。@TomBlodget您能解释一下SourceFile=“$(var.MyApplicationSetup.TargetPath)”表达式中的MyApplicationSetup是什么吗?它的id或名称到底是什么?你谈论项目引用。如何编译两个项目:一起编译还是逐个编译?@Boris MyApplicationSetup是WiX安装项目的名称(其中一个包含Product.wxs文件)。请参阅,这也适用于引导程序项目引用安装项目时。