Wix Burn安装.Net 4.5.1仅当安装的.Net版本较低而不是较高时

Wix Burn安装.Net 4.5.1仅当安装的.Net版本较低而不是较高时,.net,installation,wix,burn,.net,Installation,Wix,Burn,我们将.NET4.5.1作为软件套件的先决条件。在我们编写burn的时候,我们有.NET4.5.1作为最新版本,因此我们不必检查更高版本的安装。现在电脑上有了4.6.X或更高版本的.Net,我们的安装程序总是试图安装.Net 4.5.1。那么,如何检查是否安装了更高版本并跳过.Net安装 我们不使用web安装。安装文件将以.exe的形式提供给burn访问。以下是当前的创作代码 <WixVariable Id="WixMbaPrereqPackageId" Value="Netfx451Fu

我们将.NET4.5.1作为软件套件的先决条件。在我们编写burn的时候,我们有.NET4.5.1作为最新版本,因此我们不必检查更高版本的安装。现在电脑上有了4.6.X或更高版本的.Net,我们的安装程序总是试图安装.Net 4.5.1。那么,如何检查是否安装了更高版本并跳过.Net安装

我们不使用web安装。安装文件将以.exe的形式提供给burn访问。以下是当前的创作代码

<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx451Full" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="$(var.NetFx40EulaLink)" />

<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version"
                     Variable="Net4FullVersion" />
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version"
                     Variable="Net4x64FullVersion" Win64="yes" />

<PackageGroup Id="Netfx451Full">
  <ExePackage Id="Net45" Name="Microsoft .NET Framework 4.5.1.exe"
              Description="Microsoft .NET Framework 4.5.1 AllOS (x86 and x64) Setup"
              Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes"
              InstallCommand="/norestart"
              SourceFile="$(var.PreRequisites_x86)DotNetFramework\NDP451-KB2858728-x86-x64-AllOS-ENU.exe"
              DetectCondition="(Net4FullVersion = &quot;4.5.50938&quot;) AND (NOT VersionNT64 OR (Net4x64FullVersion = &quot;4.5.50938&quot;))"
              InstallCondition="(VersionNT >= v6.1 OR VersionNT64 >= v6.1) AND (NOT (Net4FullVersion = &quot;4.5.50938&quot; OR Net4x64FullVersion = &quot;4.5.50938&quot;))" />
</PackageGroup>

您应该使用WixNetFxExtension中的功能:

再看看这个:

只需添加以下内容(无需任何条件):


您应该使用WixNetFxExtension中的功能:

再看看这个:

只需添加以下内容(无需任何条件):


您真的应该使用。如果不是,至少应根据以下条件确定:


...
...
...
DetectCondition=“!(wix.NetFx451WebDetectCondition)”
您真的应该使用。如果不是,至少应根据以下条件确定:


...
...
...
DetectCondition=“!(wix.NetFx451WebDetectCondition)”

是的,我知道这一点。但我的问题是我在系统中安装了更高的版本。在这种情况下,我不知道如何更改安装条件。请尝试使用以下值:WIX_IS_NETFRAMEWORK_451_或_LATER_INSTALLED()是的,我知道这一点。但我的问题是我在系统中安装了更高的版本。在这种情况下,我不知道如何更改安装条件。请尝试使用以下值:WIX\u IS\u NETFRAMEWORK\u 451\u或\u LATER\u INSTALLED()
<Chain>
    <PackageGroupRef Id="NetFx451Redist" />
    <MsiPackage SourceFile="$(var.AppInstaller.TargetPath)" />
</Chain>
<?define NetFx451MinRelease = 378675 ?>

...

<Fragment> 
  <util:RegistrySearchRef Id="NETFRAMEWORK45"/> 

  ...

  <WixVariable Id="NetFx451WebDetectCondition"
               Value="NETFRAMEWORK45 &gt;= $(var.NetFx451MinRelease)"
               Overridable="yes" />

  ...

  DetectCondition="!(wix.NetFx451WebDetectCondition)"