2011-06-10 3 views
0

J'ai besoin de vérifier la version Framework, OS version & Privilèges Admin avant LaunchConditions. My OS Version & Les conditions d'administration fonctionnent comme prévu, mais pas la version de l'infrastructure. NETFRAMEWORK35 n'est pas rempli. Voici mon code.Actions personnalisées avant LaunchConditions

<PropertyRef Id="NETFRAMEWORK35" /> 
<UI> 
    <UIRef Id='...'/> 
    <Error Id="2001">Please uninstall older version of this product to continue.</Error> 
    <Error Id="2002">This application is only supported on Windows Server 2008(64 bit) or Windows 2003(32 or 64 bit).</Error> 
    <Error Id="2003">Microsoft .NET Framework Version 3.5 is missing. To download please visit $(var.FrameworkDownload)</Error> 
    <Error Id="2004">You need to be an administrator to install this product.</Error> 

</UI> 

<CustomAction Id="CurrentVersionDetected" Error="2001"/> 
<CustomAction Id="WrongOSVersionDetected" Error="2002" /> 
<CustomAction Id="FrameworkMissing" Property="NETFRAMEWORK35" Error="2003" /> 
<CustomAction Id="IsNotAdministrator" Error="2004" /> 

<InstallExecuteSequence> 
    <Custom Action="IsNotAdministrator" After="FrameworkMissing"> 
    <![CDATA[NOT(Installed OR Privileged)]]> 
    </Custom> 
    <Custom Action="FrameworkMissing" After="WrongOSVersionDetected"> 
    **<![CDATA[NETFRAMEWORK35]]> //This is make sure it is getting fired, but not** 
    </Custom> 
    <Custom Action="WrongOSVersionDetected" After="FindRelatedProducts"> 
    <![CDATA[NOT(Installed OR VersionNT = 601 OR (VersionNT = 600 AND VersionNT64))]]> 
    </Custom> 
    <Custom Action="CurrentVersionDetected" After="AppSearch">SELFFOUND</Custom> 
</InstallExecuteSequence> 

<InstallUISequence> 
    <Custom Action="IsNotAdministrator" After="FrameworkMissing"> 
    <![CDATA[NOT(Installed OR Privileged)]]> 
    </Custom> 
    <Custom Action="FrameworkMissing" After="WrongOSVersionDetected"> 
    **<![CDATA[NETFRAMEWORK35]]> //This is make sure it is getting fired, but not** 
    </Custom> 
    <Custom Action="WrongOSVersionDetected" After="FindRelatedProducts"> 
    <![CDATA[NOT(Installed OR VersionNT = 601 OR (VersionNT = 600 AND VersionNT64))]]> 
    </Custom> 
    <Custom Action="CurrentVersionDetected" After="AppSearch">SELFFOUND</Custom> 
</InstallUISequence> 


But strangely same action work if i put it after InstallValidate 

<Custom Action="FrameworkMissing" After="InstallValidate"> 
    **<![CDATA[NETFRAMEWORK35]]> //This is fired** 
</Custom> 

Répondre

0

En supposant que vous utilisez la propriété WiX netfx NETFRAMEWORK35, vous devez programmer FrameworkMissing après AppSearch, qui est l'action standard qui traite RegistrySearch.

+0

Merci, j'utilise la propriété NetFx. Mais y a-t-il un moyen de le faire avant AppSearch? C'est l'exigence, avant même de lancer l'écran? – Suresh

+0

@Suresh: Non. AppSearch est ce qui définit la propriété. Mais LaunchConditions vient après AppSearch, donc il n'y a pas de problème ...? –

+0

L'écran de lancement du problème est affiché et toutes les erreurs sont affichées en tant que boîte de dialogue (comme la fenêtre enfant). Mais si vous regardez mon code pour la vérification de la version du système d'exploitation, l'écran de lancement de la vérification Admin ne s'affichera jamais. Comme vous cliquez sur msi, il s'agit juste d'une fenêtre d'erreur et s'arrête. J'essaie d'obtenir un comportement similaire pour la version du cadre. suis-je clair? – Suresh

0

Utilisez ce code dans product.wxs pour vérifier les structures requises.

<Condition Message= 
     'This setup requires the .NET Framework 2.0 or higher. Please install .NET Framework 2.0 or higher and run the setup again.'> 
     <![CDATA[MsiNetAssemblySupport >= "2.0.50727"]]> 
    </Condition> 

Ici, je vérifie le .net framework 2.0. De même, vous pouvez changer la condition pour vérifier d'autres versions

Questions connexes