2012-12-02 5 views
4

다섯 개의 구성 요소가있는 NSIS Modern UI 2 스크립트가 작동합니다. 그 중 하나가 기본 응용 프로그램이며 4 가지 도우미 응용 프로그램이 있습니다. 응용 프로그램의 특성상 다른 응용 프로그램을 실행하지 않아도됩니다. 따라서 이들은 모두 선택적 설치입니다. 여기에는 주 응용 프로그램이 포함됩니다.NSIS - 설치된 경우에만 마무리 프로그램 실행

마침 페이지에서

, 나는

!insertmacro MUI_PAGE_FINISH 

명령 앞에 한 것을 간다

!define MUI_FINISHPAGE_RUN "$INSTDIR\MyProgram.exe" 
!define MUI_FINISHPAGE_RUN_TEXT "Start the main program" 

과 주요 응용 프로그램을 시작하는 옵션을 가질 수 있습니다. 그러나 사용자가 기본 응용 프로그램을 설치하지 않으면 확인란을 표시하지 않거나 적어도 사용하도록 설정하지 않습니다.

처음 두 줄을 Section MainSection 안에 넣으려고했으나 그때까지 UI가 이미 만들어져 있기 때문에 상자가 표시되지 않습니다.

항상 사용하도록 설정하고 설치되어있는 경우 실행되는 기능을 가리키고 싶지 않은 경우 MessageBox을 표시합니다.

이 방법이 있습니까?

답변

6

그 MUI가 정의 컴파일시에 사용되며, 런타임에 체크 박스를 수정해야합니다

!include LogicLib.nsh 
!include MUI2.nsh 
!insertmacro MUI_PAGE_COMPONENTS 
!insertmacro MUI_PAGE_INSTFILES 
!define MUI_FINISHPAGE_RUN "$instdir\Maybe.exe" 
!define MUI_PAGE_CUSTOMFUNCTION_SHOW ModifyRunCheckbox 
!insertmacro MUI_PAGE_FINISH 
!insertmacro MUI_LANGUAGE English 

Section "Maybe" SID_MAYBE 
; File "Maybe.exe" 
SectionEnd 

Function ModifyRunCheckbox 
${IfNot} ${SectionIsSelected} ${SID_MAYBE} ; You could also check if the file exists... 
    SendMessage $mui.FinishPage.Run ${BM_SETCHECK} ${BST_UNCHECKED} 0 
    EnableWindow $mui.FinishPage.Run 0 ; Or ShowWindow $mui.FinishPage.Run 0 
${EndIf} 
FunctionEnd 
+0

우수함! 당신의 도움을 주셔서 감사합니다. – wchargin

관련 문제