Wix Toolset先决条件:检查.Net Framework

时间:2016-05-17 19:41:21

标签: wix

我正在编辑一个wix包项目(版本3.10)。我正在尝试使用wixnetfxextensions来安装.net framework 4.6(如果尚未安装)。我创建了一个使用WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED属性的exepackage。我猜我没有正确使用它。有关如何使用它的任何帮助?目前.net框架不会安装无关紧要。

  <Chain>
      <PackageGroupRef Id="redist_vc140" />
      <PackageGroupRef Id="NetFx461Full" />
      <MsiPackage Id="MSI_Installer" SourceFile="C:\Installer.msi"/>
  </Chain>

  <Fragment>
      <PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED"/>
      <!-- Install .NET 4.6.1 -->
      <PackageGroup Id="NetFx461Full">
          <ExePackage Id="NetFx461"
           DisplayName="Microsoft .NET Framework 4.6.1"
           Compressed="no"
           Cache="yes"
           PerMachine="yes"
           Permanent="yes"
           Protocol="netfx4"
           Vital="yes"
           SourceFile="..\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"
           UninstallCommand="/q /norestart"
           RepairCommand="/q /norestart"
           DetectCondition="NOT WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" />
       </PackageGroup>  
  </Fragment>  

2 个答案:

答案 0 :(得分:1)

您正在做很多额外的工作来安装.net,而您实际上并不需要这样做。

要将.net 461添加到安装程序,只需包含netfxextension并添加

<Bundle>
    <PayloadGroup Id="NetFx461RedistPayload">
        <Payload Name="redist\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"
             SourceFile="C:\path\to\redists\in\repo\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"/>
    <PayloadGroup/>
</Bundle>

以便完整的安装程序包含在您的引导程序中。您可以忽略这一点,然后引导程序将下载安装程序,但如果客户没有Internet连接,则无法安装.net。

然后在您的链中添加

<PackageGroupRef Id="NetFx461Redist"/>

我使用this作为参考,并检查wix source以查看内容  正在使用的.net 461的名称在netfxextension中。


Sean Hall提到捆绑包甚至不使用属性,所以我在这里写的内容在这种情况下根本不适用。 (这也是不正确的)

答案 1 :(得分:0)

Brian Sutherland建议做了什么:添加了将.netframework与确定的最小版本号进行比较的WxsVariable。然后在exepackage中将其作为检测条件