2016-06-27 12 views
0

Wir haben. Net 4.5.1 als Voraussetzung für unsere Software-Suite. Zu der Zeit, als wir burn erstellten, hatten wir .net 4.5.1 als neueste Version und mussten daher nicht nach höheren Versionen suchen. Jetzt, da wir 4.6.X oder höhere .Net-Versionen auf dem PC haben, versucht unser Setup immer, .Net 4.5.1 zu installieren. Also, wie überprüft man, ob höhere Versionen installiert sind und .Net-Installation überspringen?Wix Burn installieren .Net 4.5.1 nur wenn installiert. Net-Version ist niedriger und nicht höher

Wir verwenden keine Web-Installation. Die Setup-Datei wird als .exe für den Zugriff durch Burn verfügbar sein. Hier ist der aktuelle Autorisierungscode.

<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> 

Antwort

1

sollten Sie die Funktionalität in WixNetFxExtension gemacht verwenden: http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/install_dotnet.html

Auch bei aussehen: Installing .NET redistributable with Wix Bootstrapper (Burn)

Gerade dieses Add (keine Bedingungen erforderlich):

<Chain> 
    <PackageGroupRef Id="NetFx451Redist" /> 
    <MsiPackage SourceFile="$(var.AppInstaller.TargetPath)" /> 
</Chain> 
+0

Ja, das weiß ich. Aber mein Problem ist, dass ich eine höhere Version im System installiert habe. Und ich weiß nicht, wie man die Installationsbedingung in diesem Fall ändert. – jero2rome

+0

Versuchen Sie, diesen Wert zu verwenden: WIX_IS_NETFRAMEWORK_451_OR_LATER_INSTALLED (http://wixtoolset.org/documentation/manual/v3/customactions/wixnetfxextension.html) –

1

Sie sollten wirklich die builtin packages verwenden. Wenn nicht, basieren die Bedingungen zumindest auf their source code:

<?define NetFx451MinRelease = 378675 ?> 

... 

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

    ... 

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

    ... 

    DetectCondition="!(wix.NetFx451WebDetectCondition)" 
Verwandte Themen