2011-12-09 2 views
2

InstallPEDatabase 기능을 선택하면 표시되는 사용자 지정 대화 상자가 있습니다. 그 다음 MyEditConfigDlg이 표시되는 기능을 선택하는 일이하고 기능을 선택하지 때 제시되지처럼WiX 조건으로 대화 건너 뛰기

<Publish Dialog="MyCustomizeDlg" Control="Next" Event="NewDialog" Value="MyEditConfigDlg"><![CDATA[(&CreatePEDatabase=3)]]></Publish> 
    <Publish Dialog="MyCustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg"><![CDATA[NOT(&CreatePEDatabase=3)]]></Publish> 

    <Publish Dialog="MyEditConfigDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> 
    <Publish Dialog="MyEditConfigDlg" Control="Back" Event="NewDialog" Value="MyCustomizeDlg">1</Publish> 

    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyCustomizeDlg" Order="1">NOT CreatePEDatabase = 3 AND NOT Installed OR WixUI_InstallMode = "Change"</Publish> 
    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyEditConfigDlg" Order="2">CreatePEDatabase = 3 AND NOT Installed OR WixUI_InstallMode = "Change"</Publish> 
    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="3">Installed AND NOT PATCH</Publish> 
    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="4">Installed AND PATCH</Publish> 

: 여기 MyEditConfig 내 지정 대화이다 순서의 일부입니다. 문제는 내가 내 사용자 지정 대화 상자에서 다음을 클릭하고 VerifyReadyDlg으로 가서 거기에서 다시 클릭하면 대신 MyCustomizeDlg으로 돌아갑니다. 조건에 문제가있는 것을 알고 있지만 그게 무엇인지 파악할 수 없습니다.

답변

3

"feature"CreatePEDatabase 구문은 "속성"(접두사가없는 변수)로 지정됩니다. 피쳐에 접두어를 붙이려면 앰퍼샌드가 필요합니다. 지금은 테스트에서 "NOT (Is Create the Property CreatePEDatabase = 3)"을 묻습니다.이 속성은 존재하지 않으며 아무 것도 같지 않기 때문에 true가됩니다. 구문을 기능으로 변경하면 올바르게 평가됩니다. 그에만 사용됩니다로서, 또한 http://msdn.microsoft.com/en-us/library/aa368012(VS.85).aspx

, 당신은 "주문"값을 생략 할 수 있습니다 : 여기

은 (윅스 결과 MSI 파일을 읽습니다)가 MSI 엔진에 의해 사용되는 구문의 좋은 요약입니다 같은 조건에 대한 여러 대화 상자의 특별한 경우. 테스트를 통해 각 상황을 고유하게 만듭니다.

+0

링크를 제공해 주셔서 감사합니다. – hs2d