Question

Je crée un projet d'installation dans ma solution en utilisant WIX 3.8. Dans le cadre de cette installation, je crée certaines conditions de lancement, dont l'une vérifie que Microsoft .NET Framewrad 4.5.1 est installée.

Pour ce faire, je veux utiliser certaines des propriétés du WixNetFxextension LIB qui semblent fonctionner correctement pour les anciennes versions du framework .NET. Il y a un exemple de comment faire cela sur http://wixtoolset.org /Documentation/manual/v3/howtos/redistributables_and_install_checks_and_install_checks/check_for_dotnet.html Cela ne fonctionne pas pour .NET 4.5.1 Cependant, car il n'y a pas de propriété NetFramework451 pour vérifier.

En regardant la source du module NetFX451.WXS ( http://wix.codeplex.com/sourcecontrol/latest#src/ext/netfxextension/wixlib/netfx451.wxs ) Il apparaît qu'il n'y a pas de propriété distincte à utiliser pour .NET 4.5.1, mais plutôt Il utilise également le même NetFramework45. Si je comprends bien, V4.5.1 est une mise à niveau sur place pour V4.5, elle utilise donc les mêmes clés de registre (je pense). Quoi qu'il en soit, dans ce module, ils vérifient simplement le numéro de version renvoyé à partir de NetFramework45 comme suit:

DetectCondition="NETFRAMEWORK45 >= $(var.NetFx451MinRelease)"

J'ai donc supposé que je pouvais juste écrire une condition comme suit:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
       <![CDATA[Installed OR (NETFRAMEWORK45 >= 378675)]]>
    </Condition>

Mais cela a renvoyé le message d'erreur sur une machine que je connais a le .NET Framework 4.5.1 installé. J'ai donc créé une condition comme celle-ci pour que je puisse simplement voir le numéro de version à partir du registre:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message ="[NETFRAMEWORK45]">0</Condition>

Ceci affiche une boîte de message avec le texte suivant: # 378758 Donc, je sais que la valeur dans le registre est correcte.

Donc je suis un peu confus pourquoi ma condition a échoué. Y a-t-il quelque chose d'évident que je manque ici, ou y a-t-il une autre façon de comparer cette valeur dans l'élément de condition?

Voici la solution pour inclure le symbole de hachage comme suggéré par phildw:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
      <![CDATA[Installed OR (NETFRAMEWORK45 >= "#378675")]]>
    </Condition>

Était-ce utile?

La solution

Vous incluez ce numéro dans la comparaison, cela ne va pas aider.Avez-vous essayé d'inclure le numéro dans votre comparaison CDATA?

Je supposerais que lorsque Microsoft Personnes post des exemples de code pour détecter des versions-cadres, il ne peut pas être effectué avec un simple registration de registre dans un fichier MSI.

http://blogs.msdn.com/B / ASTEBNER / Archive / 2013/10/17 / 10457758.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top