2011-04-29 2 views
1

MUI 대화 상자의 PRE 기능은 필요할 때만 호출 할 수 있습니까?NSIS 설치 프로그램에서 MUI의 PRE 기능 호출 NSIS 설치 프로그램의 페이지/대화 상자 건너 뛰기

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage 
!insertmacro MUI_PAGE_COMPONENTS 

Function SkipComponentsPage 
Abort 
MessageBox MB_OK "You chose to UPDATE your current version" 
FunctionEnd 

이 섹션은 기본적으로 선택됩니다 // 즉, 사용자가 선택하거나이 부분을 취소 할 수 없습니다입니다,이 실행되어야합니다 .......... 수행하는 방법 이걸 숨기려면 그 이름에 - 기호를 포함시켜야합니다. 그 이름은 내가 NSIS 설치에 내 사용자 지정 대화 페이지에 두 RadioButtons를 (데모 & 업데이트)가

Section "-mandatory" SEC_UPDATE 
    #Do update............ 
SectionEnd 

"필수"입니다. 사용자가 UPDATE (설치 라디오 버튼을 선택)를 선택하면 구성 요소 페이지가 생략되고 지정된 섹션이 자동으로 CHECKED되고 실행됩니다.

그러나 사용자가 DEM을 설치하기로 선택한 경우 (DEMO RadioButton을 선택하면) 구성 요소 페이지는 건너 뛰지 않으며 & 사용자는 해당 구성 요소 페이지에서 섹션을 선택하거나 선택 취소 할 수 있습니다. 당신은 사용자가 데모 모드에서 업데이트를 선택 할 수 있도록하려면

... 
section "" SEC_UPDATE 
sectionend 

Function SkipComponentsPage 
!insertmacro UnSelectSection ${SEC_UPDATE} ; Don't include update with demo by default? 
${If} $InstallType == UPDATE 
    !insertmacro SelectSection ${SEC_UPDATE} 
    Abort 
${EndIf} 
Functionend 

그것은 나에게 정말 명확하지 않다 :

답변

1

는 페이지 콜백은 항상라고,하지만 당신은 함수 내에서 논리를 넣을 수 있습니다 업데이트를 강제하려는 경우 그러나 당신은 섹션은 읽기 전용으로 만들 수 있습니다

section "Update" SEC_UPDATE 
SectionIn RO 
sectionend 

(그리고 사전 기능에서 UnSelectSection 호출 제거)

을 ...하거나 섹션을 당신이 제안한 것처럼 - 이름 접두사로 보이지 않습니다.

+0

선생님, 우리가 어제 논의하고 있던 저의 이전 게시물을 보았습니까? 제발 도와주세요. 거기에 의견이 게시되었습니다. – sqlchild

+0

데모 모드에서는 사용자가 업데이트 할 수 없으며, 둘 다 완전히 있습니다 별도 – sqlchild

+0

어제 코드에이 코드를 붙여 넣으면 작동합니까? – sqlchild

관련 문제