문제

나는 설치 관리자를 만드는 프로젝트에서 제 솔루션을 사용하여 WiX3.8.의 일환으로 이 설치가 만드는 일부를 시작 조건 하의는가를 확인하는 Microsoft.4.5.1 설치된 것입니다.

이를 위해 사용하고 싶의 속성에 WixNetFxExtension lib 는 것을 이전 버전의.NET framework.예있의에서 이를 수행하는 방법 http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/check_for_dotnet.html 이 작동하지 않습니다.NET4.5.1 그러나 같은 없 NETFRAMEWORK451 속성을 확인합니다.

보고는 소스에 대한 NetFx451.다 module(http://wix.codeplex.com/SourceControl/latest#src/ext/NetFxExtension/wixlib/NetFx451.wxs 는)그것가 없다고 표시하는 별도의 속성을 사용한다.NET4.5.1 지만,오히려 그것은 또한 동일하게 사용 NETFRAMEWORK45.내가 알고있는 것처럼,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>

그러나,이 오류 메시지를 반환된 컴퓨터에서 내가 아는다.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 을 비교합니까?

고 싶다고 가정할 때 Microsoft 게시 코드 예제를 감지하는 프레임워크 버전 할 수 없으로 간단하 RegistrySearch 에 MSI 파일입니다.

http://blogs.msdn.com/b/astebner/archive/2013/10/17/10457758.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top