Erkennen .NET Framework 4.5.1 Verwendung von WiX

Ich bin momentan dabei, ein installer-Projekt in meiner Lösung mit WiX 3.8. Als Teil dieser Installation ich einige Startbedingungen, von denen eine überprüfung, dass Microsoft .NET Framework 4.5.1 ist installiert.

Dazu möchte ich einige der Eigenschaften in der WixNetFxExtension lib, die scheinen gut zu funktionieren, die für ältere Versionen von der .NET-framework. Es ist ein Beispiel, wie dies zu tun auf http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/check_for_dotnet.html Das nicht funktioniert .NET 4.5.1 jedoch, da es keine NETFRAMEWORK451 Eigenschaft zu überprüfen.

Blick auf die Quelle für die NetFx451.wxs-Modul (http://wix.codeplex.com/SourceControl/latest#src/ext/NetFxExtension/wixlib/NetFx451.wxs) es scheint, dass es keine separate Eigenschaft für .NET 4.5.1, sondern es nutzt auch die gleichen NETFRAMEWORK45. Wie ich es verstehe, v4.5.1 ist ein in-place-Aktualisierung zum v4.5, so dass es verwendet die gleichen registry-Schlüssel (glaube ich). Trotzdem, in diesem Modul, Sie einfach überprüfen Sie die Versionsnummer zurückgegeben, die von NETFRAMEWORK45 wie folgt:

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

So, ich dachte, ich könnte schreiben Sie einfach eine Bedingung wie die folgende:

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

Aber, das die Fehlermeldung zurückgegeben, die auf eine Maschine, die ich kenne, hat das .NET Framework 4.5.1 installiert. So habe ich eine Bedingung wie diese, so konnte ich nur sehen, die Versionsnummer wird zurückgegeben, aus der Registrierung:

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

Dies zeigt ein Meldungsfeld mit dem folgenden text: #378758 So weiß ich, dass der Wert in der registry ist korrekt.

So, ich bin ein wenig verwirrt, warum mein Zustand ist fehlgeschlagen. Gibt es etwas offensichtlich ich hier vermisst, oder gibt es eine andere Möglichkeit zu vergleichen, Wert in dem Zustand element?

Hier ist der fix enthalten die hash-symbol, wie vorgeschlagen, durch PhilDW:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
      <![CDATA[Installed OR (NETFRAMEWORK45 >= "#378675")]]>
    </Condition>
  • Bearbeitet, um zu zeigen, reparieren wie vorgeschlagen, durch PhilDW. Beachten Sie auch, dass musste ich mit Anführungszeichen um den Wert. Vielen Dank für die Hilfe Phil.
  • Es ist erwähnenswert, dass die oben genannten Vergleich ist der Vergleich der strings, so #900 wird kommen, wie höher als #378675. Ich würde sagen, es ist eine faire Wette, es wird nicht ein Punkt-release .NET 4.5 wird die Freilassung Attribut in der Registrierung, um die Uhr über 1000000. Für was es Wert ist ich ging mit der Annahme, dass jede andere Zahl, abgesehen von der base-release-Nummer ist eine höhere Punkt-release und daher, was wir wollen. Also mein Vergleich ist: <![CDATA[Installiert ODER (NETFRAMEWORK45 UND NETFRAMEWORK45 <> "#378389")]]>
  • Die neueste version von WiX hat eine Eigenschaft: WIX_IS_NETFRAMEWORK_451_OR_LATER_INSTALLED hier beschrieben: wixtoolset.org/documentation/manual/v3/customactions/.... Ich baute mir ein MSI verwendet diese Eigenschaft, um zu sehen, wie WiX setzt, und es verwendet das oben beschriebene Update genau.
InformationsquelleAutor Avery | 2014-02-25
Schreibe einen Kommentar