2016-06-07 6 views
0

SetupProgress 대화 상자 앞에 간단한 맞춤 작업을 삽입하여 AskOptions 대화 상자에 몇 가지 바로 가기 옵션을 제공합니다.대화 상자 뒤로 버튼 사용

예상대로 동작하지만 대부분 알 수없는 동작이 하나 있습니다. 사용자가 뒤로 버튼을 클릭하면 이전 대화 상자로 이동하여 SetupProgress 대화 상자를 계속 진행하지 않도록합니다. 내 대화 상자 (실제로는 바로 가기를 만드는 코드 제외)에 다음 코드를 사용합니다. 당신이 볼 수 있듯이

function MyFunction(hMSI) 

    NUMBER nResult; 

    STRING szMsg, szText1, szText2, szText3; 
    NUMBER nReturn, nValue, nvCheck1, nvCheck2, nvCheck3; 

begin 
    SetDialogTitle(DLG_ASK_OPTIONS, "More Options"); 
    szMsg = "Select from the additional options below."; 

    szText1 = "Shortcut option 1"; 
    szText2 = "Shortcut option 2"; 
    szText3 = "Shortcut option 3"; 

    nvCheck1 = TRUE; 
    nvCheck2 = TRUE; 
    nvCheck3 = FALSE; 

    // Display the check box (NONEXCLUSIVE) dialog. 
    nValue = NONEXCLUSIVE; 
    nResult = AskOptions (nValue, szMsg, 
      szText1, nvCheck1, 
      szText2, nvCheck2, 
      szText3, nvCheck3); 


    //This is the troublesome code... Not sure how to handle this...  
    //if (nResult = BACK) then 
    // goto [Where?]; 
    //endif; 


end; 

, 나는 뒤로 버튼을 처리 할 수있는 아래쪽 라인이, 난 그냥 실제로 이전 대화 상자로 돌아갈 방법에 관한 단서가 없다.

답변

1

기본 MSI 테이블 기반 대화 상자와 InstallScript 코드 기반 대화 상자를 인터리브하지 않을 것을 제안합니다. 그것은 어려울 것이며, 최선의 부모님 문제 또는 최악의 경우 집중력 상실을 초래할 것입니다.

goto <previous dialog label>; 접근 방식은 여러 대화 상자를 표시하는 스크립트의 일부로 작동합니다. 뒤쪽으로 점프하면 다음 레이블로 이어지는 대화 상자가 표시됩니다. 그래서 어떻게 든 시뮬레이션하고 싶습니다. 제어 이벤트에서이 InstallScript 대화 상자를 표시하는 경우 다음에 표시 할 대화 상자를 결정할 수있는 속성을 설정해야합니다. 당신이 NEXT 또는 BACK에 속성 DLGBUTTON를 설정하면 예를 들어, 의 값 DLGBUTTON에 따라 상호 배타적 인 조건이 NewDialog 컨트롤 이벤트를 생성 할 수 있습니다. 이 사용자 지정 작업이 다른 곳에서 호출되면 그에 따라 호출자를 조정하십시오.

그러나 가능하면 MSI 테이블을 사용하여이 대화 상자를 구현하고 비 응집성 UI로 인해 많은 어려움을 피하십시오.

+0

확실히 MSI 대화 상자를 다시 사용했습니다. 그 이후로 성공을 거두었습니다. InstallScript 대화 상자로 갔던 이유는 원래 MSI 대화 상자를 사용하고 있었지만 이벤트가 어떻게 작동하는지 오해했습니다. 모두 정렬되었습니다. –