2013-01-09 2 views
0

Wix setupKit이 기능을 기반으로 몇 가지 사용자 지정 대화 상자가 표시되는 몇 가지 기능이 있습니다. 새로운 조건으로 결합하고 싶은 조건이 있습니다. 다음새 속성에서 기능 조건 조합하기

<Property Id="SERVERSETTINGSISNEEDED"> 
<![CDATA[(&Client = 3) OR (!Client = 3) OR (&CoreService = 3) OR (!CoreService = 3) OR (&ResourceService = 3) OR (!ResourceService = 3)]]> 
</Property> 

과 : 예를 들어

<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="ServersSettingsDlg" Order="1">SERVERSETTINGSISNEEDED</Publish> 

는하지만 그것은 작동하지 않고 항상 대화 것으로 나타났다. 도움을 주시면 감사하겠습니다.

답변

2

WiX에서 <Property> 요소를 사용하여 MSI 속성을 정의하면 빌드시 생성되며 결국 MSI 패키지가 빌드 될 때까지 Property table에 레코드가 생깁니다. 반면 기능 상태는 런타임에, 즉 패키지가 설치 될 때 해결됩니다.

따라서 빌드 타임 중에 런타임 값을 참조하려고 시도하지만 올바르지 않습니다. 결과 속성이 true으로 평가되는 이유를 설명 할 수는 있지만 그 질문은 아닙니다.

귀하의 질문을 이해하는 한, 긴 문자열을 여러 번 복사/붙여 넣지 않기 위해 요소의 조건 부분을 짧게하고 싶습니다. 이 경우 MSI 속성을 여기에 포함 할 필요가 없습니다. WiX 전 처리기 기능을 사용하여이 작업을 수행 할 수 있습니다. 그래서

, 다음을 수행하십시오

<?define ServerSetingIsNeeded = "(&Client = 3) OR (!Client = 3) OR (&CoreService = 3) OR (!CoreService = 3) OR (&ResourceService = 3) OR (!ResourceService = 3)>"?>

  • 조건 대신 변수를 사용 :

  • 은 전처리 변수로 조건을 정의 <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="ServersSettingsDlg" Order="1">$(var.ServerSetingIsNeeded)</Publish>

+0

안녕 Yan, 고마워. – Mohsen

관련 문제