Wix在bundle中检测.NET 4.5.2

时间:2014-09-02 13:20:56

标签: wix windows-installer .net-framework-version wix-extension

我正在尝试为.NET 4.5.2创建一个安装程序包。

我遵循了these指令,它适用于该.NET版本。

但是当我更改版本时,如下所示,当我第二次运行安装程序时,它不会检测已安装的.NET版本:

  <ExePackage Id="Netfx452" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q /norestart"
    SourceFile="$(var.ProjectDir)Resources\NDP452-KB2901907-x86-x64-AllOS-ENU.exe"
    DetectCondition="(Netfx4FullVersion=&quot;4.5.51209&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.51209&quot;))"
    InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.51209&quot; OR Netfx4x64FullVersion=&quot;4.5.51209&quot;))"/>

1 个答案:

答案 0 :(得分:8)

仅在WiX 3.9中支持:

  1. 包含对WixNetFxExtension.dll的引用

    enter image description here

  2. 在Bundle.wxs文件中,将以下内容添加到<Bundle><Chain>元素

    <PackageGroupRef Id="NetFx452Redist" />
    

    或者,将以下任何内容替换为Id属性的值:

    PackageGroup ID     Description
    NetFx452Web         .Net Framework 4.5.2 web setup.
    NetFx452Redist      .Net Framework 4.5.2 standalone setup.
    
  3. 以下是最终标记的简短示例:

    <Bundle Name="My App" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="{YOUR-GUID-HERE}">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/>
        <Chain>
            <PackageGroupRef Id="NetFx452Redist" />
            <MsiPackage SourceFile="$(var.AppInstaller.TargetPath)" />
        </Chain>
    </Bundle>