2014-06-17 8 views
2

Windows 서비스 (MSI)와 EXE를 설치하는 WIX 부트 스트 래퍼 응용 프로그램이 있습니다. 나는 .NET 4.0 프레임 워크가 Windows 서비스 설치 프로그램의 전제 조건으로 존재하는지 확인하려고 노력해 왔습니다. 프레임 워크가 없으면 설치 프로그램을 중단하고 다운로드 할 수있는 위치를 지정합니다. 현재 서비스 설치 프로그램은 조건을 무시하고 프레임 워크가 있는지 여부에 관계없이 서비스를 설치하려고합니다.WIX 부트 스트 래퍼에서 .NET 4.0 프레임 워크를 확인하는 중 문제가 발생했습니다.

이 조각은 Windows 서비스 설치에 있습니다

<Product Id="*" Name="TestService" Language="1033" Version="1.0.0.1" Manufacturer="xxxxxx" UpgradeCode="<xxxxxxxx"> 
    <PropertyRef Id="NETFRAMEWORK40FULL" /> 
    <Condition Message="You need to have the .NET 4.0 Framework installed"> 
     <![CDATA[Installed OR NETFRAMEWORK40FULL]]> 
    </Condition> 
</Product> 

이 조각은 부트 스트 래퍼에서이다 : 도움을

<Bundle Name="BundledInstall" Version="1.0.0.0" 
    UpgradeCode="xxxxxx"> 
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"> 
    <bal:WixStandardBootstrapperApplication 
    LicenseFile="xxxxxxxx" 
    LogoFile="xxxxxxxx" 
    /> 
</BootstrapperApplicationRef> 

<Chain> 
    <PackageGroupRef Id="MyPackage" /> 
    <PackageGroupRef Id="ServicePackage" /> 
</Chain> 
</Bundle> 

<Fragment> 
<PackageGroup Id="ServicePackage"> 
    <MsiPackage 
    SourceFile="C:\Users\Max\dev\wix\pappBootstrapper\sebService.msi" Cache="no" ForcePerMachine="yes"> 
     </MsiPackage> 
</PackageGroup> 
</Fragment> 

감사합니다. 3.5 프레임 워크 또는 3.5 SP 당신이 아래의 속성을 사용할 수있다 설치되어 있는지 여부를 확인하기 위해 예를 들어 WIXNETFXEXTENSION

:

답변

2

는이 페이지에 정의 된 WixNetfxExtension 속성을 사용할 수있다.

NETFRAMEWORK35 - Set to #1 if the .NET Framework 3.5 is installed (not set otherwise). 
NETFRAMEWORK35_SP_LEVEL - Indicates the service pack level for the .NET Framework 3.5. 

는 프로젝트에서 이러한 속성의 사용을 아래의 단계를 따르십시오 :

1 단계 당신은 당신이 할 수있는 Visual Studio에서 윅스를 사용하는 경우 프로젝트 에 윅스 .NET 확장 라이브러리 추가하기

  1. 오른쪽 솔루션 탐색기 및 SELEC에서 프로젝트를 클릭 비주얼 스튜디오에서 윅스 프로젝트를 엽니 다

    1. : 참조 추가 대화 상자를 사용하여 확장을 추가 t는
    2. 가 참조 추가 대화
    를 닫 추가 목록에서 WixNetFxExtension.dll 어셈블리를 선택하고 클릭 ... 참조 추가

2 단계 :에 윅스 .NET 확장 네임 스페이스를 추가하여 프로젝트

일단 라이브러리가 프로젝트에 추가되면 적절한 WiX 요소에 액세스 할 수 있도록 .NET 확장 네임 스페이스를 프로젝트에 추가해야합니다.

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"> 

3 단계 :이 다음과 같은 속성을 추가하여 프로젝트의 최상위 요소를 수정 수행하려면 프로젝트에 필요한 속성을 참조

<PropertyRef Id="NETFRAMEWORK20"/> 

4 단계 : 미리 정의 된 사용 조건의 속성

프레임 워크의 서비스 팩 수준을 확인하려면 * _SP_LEVEL 속성을 사용하십시오. 다음 조건은 .NET Framework 3.0 SP1이 컴퓨터에없는 경우 설치를 차단합니다.

<Condition Message="This application requires .NET Framework 3.0 SP1. Please install the .NET Framework then run this installer again."> 
    <![CDATA[Installed OR (NETFRAMEWORK30_SP_LEVEL and NOT NETFRAMEWORK30_SP_LEVEL = "#0")]]> 
</Condition> 

출처 : 내가 틀리지 않는 How to check .Net framework versions

+2

,이 솔루션은 제품에 대한 작동이 아닌 번들 (부트 스트 래퍼, 당신은 번들 – Cocowalla

+0

오기 '에 PropertyRef를 사용할 수 없기 때문에이 보인다 Cocowalla가 말한 것은 사실입니다. @MattLock은 성공 했습니까? WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED를 사용하려고했으나 조건으로 사용되었지만 무엇이든지간에 항상 false를 반환합니다. – LeoPucciBr