質問

WiX 3.8を使用して、私の解決策にインストーラプロジェクトを作成しています。このインストールの一部として、私はいくつかの起動条件を作成し、その1つがMicrosoft .NET Framework 4.5.1がインストールされていることを確認しています。

これを行うには、古いバージョンの.NET Frameworkには問題なく機能するWixNetFXextension libの一部のプロパティを使用します。これを行う方法は、 http://wixtoolset.org /documentation/manual/v3/howtos/redistributables_and_install_cchecks/check_for_dotnet.html これは、.NET 4.5.1では機能しません。ただし、チェックするNetFramework451プロパティがないためです。

NETFX451.WXSモジュールのソースを見る( http://wix.codeplex.com/sourcecontrol/latest#src/ext/netfxextension/wixlib/netfx451.wxs ).NET 4.5.1には、むしろ使用する個別のプロパティがないようです。それはまた同じNetFramework45を使用します45。私が理解しているように、v4.5.1はv4.5のインプレースアップグレードですので、同じレジストリキーを使用します(私は思う)。とにかく、そのモジュールでは、それらは単にNetFramework45から返されたバージョン番号を次のようにチェックします。

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

だから私は次のような状態を書くことができると仮定しました:

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

しかし、これは私が知っているマシンのエラーメッセージを返しました.NET Framework 4.5.1がインストールされています。だから私はこのような条件を作成しましたので、レジストリから返されるバージョン番号を見ることができました:

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

次のテキストのメッセージボックスを示します。#378758だから私はレジストリ内の値が正しいことを知っています。

だから私の状態が失敗した理由は少し混乱しています。ここに見逃しているのは明らかなものはありますか、それとも条件要素のその値を比較する方法は他にありますか?

これは、Phildwによって示唆されたハッシュ記号を含む修正です:

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

役に立ちましたか?

解決

あなたはその比較の#を含みます、それは助けにはなりません。あなたのCDATA比較に#を含めてみましたか?

マイクロソフトの人々がコード例を郵便で投稿すると、MSIファイルで簡単なRegistrySearchを使用して行うことはできません。

> http://blogs.msdn.com/B / ASTEBNER /アーカイブ/ 2013/10/17/10457758.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top