2014-03-24 10 views
2

wix3.8을 사용하고 있으며 MSI 설치시 WixUI_Advanced를 통해서만 사용할 수있는 InstallScopeDlg가 필요합니다. 그러나 사용권 계약서는 첫 번째 대화 상자가 아닙니다.Wix3.8 WixUI_Advanced 대화창 라이센스 동의를 무시하는 방법

나는이 대화 상자를 건너 뛰는 방법 (또는 표시하지 않음)에 많은 게시물을 보았지만 InstallScopeDlg를 지원하지 않는 WixUI_InstallDir을 사용하고 있습니다.

<Property Id="ApplicationFolderName" Value="Outlook Add In" /> 
<Property Id="WixAppFolder" Value="WixPerMachineFolder" /> 

<UI Id="UiSequence"> 
    <UIRef Id="WixUI_Advanced" /> 
</UI> 

사람이 어떻게 여전히 WixUI_Advanced를 사용하는 동안 숨기거나 라이센스 계약을 생략하는 나에게 보여 주시겠습니까 :

이 내가 가진 것입니다.

답변

3

대화 상자에서 대화 상자로 Windows Installer가 이동하는 방식은 NewDialogControlEvents을 사용한다는 것을 이해해야합니다. 기본적으로 Dialog 1은 Goto dialog 2와 같은 NewDialog Control Event와 함께 PushButton Control을 가질 것입니다. Dialog 2는 Dialog 1로 이동하는 Back Button을 갖습니다. WiX UI 확장은이 모든 것을 숨기려고합니다. 기본 UI를 만들 수 있습니다. 그러나 ORCA를 사용하여 빌드 된 MSI를 편집하고 ControlEvent table을 보면이를 볼 수 있습니다.

ControlEvent 테이블에는 Ordering 열이 있습니다. MSDN doco는 이것을 정확하게 설명하지는 않지만 우선 순위이므로 실제로는 순서가 아닙니다. 진정한 승리로 평가되는 최고.

WiX에서 Publish element은 ControlEvent 항목에 해당합니다. 트릭은 올바른 컨트롤에서 NewDialog 컨트롤 이벤트를 작성하여 기존 항목의 순위를 매기고 원하지 않는 대화 상자를 건너 뛰거나 새 대화 상자를 삽입하는 것입니다.

내 오픈 소스 프로젝트 ISWIX의 코드에서 here을 찾는 방법의 예가 나와 있습니다.

+0

<대화 식 "InstallDlg"너비 = "370"높이 = "270"제목 = "[ 제품 이름] 설정 "NoMinimize ="no "> {\ DlgTitleFont} 설치 준비 <제어 ID (CONTROL ID) = "설치"유형 = "푸시 버튼"X = "304"Y = "243"너비 = "56"높이 = "17"의 기본 = "예"텍스트 = "설치"> <게시 이벤트 = "EndDialog"값 = "반환"/> <= "CostFinalize"/> 후에 대화 상자 표시 "InstallDlg"/> Gustavo