2017-08-16 4 views
0

J'utilise bootstraper installer VC++ et .NET Framework,comment vérifier la condition pour la vérification de version dans bootstraper (wix)?

<?xml version="1.0" encoding="UTF-8"?> 
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
<Bundle Name="Engage" Version="1.0.0.0" Manufacturer="my Corporation" UpgradeCode="d7d559b1-3388-4275-91e2-d8d44d2f02db"> 
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 
<Chain> 
    <!-- TODO: Define the list of chained packages. --> 
    <PackageGroupRef Id="Netfx45FullPackage" /> 
    </Chain> 
</Bundle> 
<Fragment> 
<PackageGroup Id="Netfx45FullPackage"> 
    <ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\NDP452-x86-x64ENU.exe" /> 
    <ExePackage Id="VC2013" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\vcredist_x862013.exe" /> 

    <MsiPackage Id="MyProg" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="D:\Projects\Crimson\engage.client\EngageSetupCreator\bin\Debug\EngageSetupCreator.msi" /> 
    </PackageGroup> 
    </Fragment> 
</Wix> 

actuellement iam installer ces deux sans vérifier toute condition, que dois-je faire pour vérifier si la même version pour vC++ et .NETFramework existent, et si existe sauter l'installation?

pas besoin d'installer à nouveau s'il existe déjà.

Répondre

1

Vous devez ajouter une condition de détection et utiliser la recherche de registre pour obtenir la version installée.

Par exemple:

<?define NetFx451MinRelease = 378675 ?> 

<util:RegistrySearchRef Id="NETFRAMEWORK45"/> 

<ExePackage Id="NetFx451" 
       ... 
       DetectCondition="NETFRAMEWORK45 &gt;= $(var.NetFx451MinRelease)" 
       ... 
       > 
</ExePackage> 

Même chose pour le vC++.

+0

pourriez-vous expliquer « exactement ce que > = $ (var.NetFx451MinRelease) indique? –

+0

378675 ce que cela signifie –

+0

? Ceci est le numéro de version. Si votre état est. Net version 4.5.1 ou plus, cette façon est comment est-ce que vous le faites –