2013-05-08 2 views
2

WIX 설치 패키지에는 병합 모듈이 포함되어 있으며 조건부로 설치해야하는 기능이 있습니다. 조건은 사용자 지정 동작으로 설정된 속성을 사용하여 평가해야합니다. 다음은이 내 WXS에 보이는 방법은 다음과 같습니다Wix : 사용자 지정 동작으로 설정된 속성의 기능 조건

<Directory Id="INSTALLLOCATION" Name="testSetup"> 
    <Merge Id="mergeA" Language="1033" SourceFile="test.msm" DiskId="1" /> 
</Directory> 

<InstallExecuteSequence> 
    <Custom Action="find" Before="CostInitialize">Not Installed</Custom> 
</InstallExecuteSequence> 

<CustomAction Id="find" Return="check" BinaryKey="script" VBScriptCall="findA" /> 
<Binary Id="script" SourceFile="script.vbs" /> 

수준 = 0 내가 경로가 존재하는 경우에만 설치하지 넣어 한 기능을 사용할 수 없습니다입니다.

<Feature Id="productFeatA" Title="featA" Level="1"> 
    <Condition Level="0"><![CDATA[NOT pathA]]></Condition> 
    <MergeRef Id="mergeA" /> 
</Feature> 

그리고 간단한 테스트 VBS 스크립트 :

Function findA 
    Session.Property("pathA") = "test" 
End Function 

것은 그래서 기능 상태가 동작하지 않습니다 사용자 지정 작업을 통해 설정되는 속성을 사용하여. 내가 여기서 뭘 잘못하고 있는거야?

답변

1

사용자 지정 작업은 현재 InstallExecuteSequence에서만 실행되도록 예약되어 있습니다. 설치가 InstallUISequence을 통해 실행되는 경우 Feature은 계속 활성화됩니다. InstallUISequence은 '조용히'설치를 실행하도록 명시 적으로 지정하지 않는 한 있습니다.

다행히도 쉽게 해결할 수 있습니다. InstallExecuteSequence의 피어로 다음을 추가하십시오.

<InstallUISequence> 
    <Custom Action="find" Before="CostInitialize">Not Installed</Custom> 
</InstallUISequence>