Managing Sections on Runtime: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 183: | Line 183: | ||
</highlight-nsis> | </highlight-nsis> | ||
[[Category:Tutorials]] | |||
[[Category:Section Management Functions]] | [[Category:Section Management Functions]] |
Revision as of 17:05, 8 January 2007
Author: Red Wine (talk, contrib) |
Description
The following example on how to manage sections on runtime provived for the subject at this forum thread.
The Code
; the following piece could be used also as a header e.g. myheader.nsh ## HEADER PART BEGINS HERE !define SF_USELECTED 0 !define SF_SELECTED 1 !define SF_SECGRP 2 !define SF_BOLD 8 !define SF_RO 16 !define SF_EXPAND 32 ############################### !macro SecSelect SecId Push $0 IntOp $0 ${SF_SELECTED} | ${SF_RO} SectionSetFlags ${SecId} $0 SectionSetInstTypes ${SecId} 1 Pop $0 !macroend !define SelectSection '!insertmacro SecSelect' ################################# !macro SecUnSelect SecId Push $0 IntOp $0 ${SF_USELECTED} | ${SF_RO} SectionSetFlags ${SecId} $0 SectionSetText ${SecId} "" Pop $0 !macroend !define UnSelectSection '!insertmacro SecUnSelect' ################################### !macro SecExtract SecId Push $0 IntOp $0 ${SF_USELECTED} | ${SF_RO} SectionSetFlags ${SecId} $0 SectionSetInstTypes ${SecId} 2 Pop $0 !macroend !define SetSectionExtract '!insertmacro SecExtract' ################################### !macro Groups GroupId Push $0 SectionGetFlags ${GroupId} $0 IntOp $0 $0 | ${SF_RO} IntOp $0 $0 ^ ${SF_BOLD} IntOp $0 $0 ^ ${SF_EXPAND} SectionSetFlags ${GroupId} $0 Pop $0 !macroend !define SetSectionGroup "!insertmacro Groups" #################################### !macro GroupRO GroupId Push $0 IntOp $0 ${SF_SECGRP} | ${SF_RO} SectionSetFlags ${GroupId} $0 Pop $0 !macroend !define MakeGroupReadOnly '!insertmacro GroupRO' ## HEADER PART ENDS HERE ; !include myheader.nsh Name InstTest OutFile 'InstTest.exe' InstType "Install" InstType "Extract" InstType /NOCUSTOM var nakedking !include MUI.nsh !insertmacro MUI_PAGE_LICENSE '${NSISDIR}\license.txt' !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" SectionGroup "Install Java" GRP_1 Section "Install Java SDK" SEC_1 ;;;;;;;;;;;;;; SectionEnd Section "Install MySQL database server" SEC_2 ;;;;;;;;;;;;;; SectionEnd Section "ISA Manager" SEC_3 ;;;;;;;;;;;;;;; SectionEnd Section "Configure Database" SEC_4 ;;;;;;;;;;;;; SectionEnd Section "Update Quantel database" SEC_5 ;;;;;;;;;;;;;; SectionEnd Section "Downdate Quantel database" SEC_6 ;;;;;;;;;;;;; SectionEnd SectionGroupEnd SectionGroup "Extract Files" GRP_2 Section "File Extract Only" SEC_7 ;;;;;;;;;;;;;; SectionEnd SectionGroupEnd Function .onInit MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \ 'Select YES to watch the action of the first instance.$\r$\n\ Select NO to watch the action of the second instance.$\r$\n\ Or select CANCEL to watch the king naked.' \ IDYES condition1 IDNO condition2 StrCpy '$nakedking' '1' goto exit condition1: ${SelectSection} ${SEC_1} ${SelectSection} ${SEC_5} ${UnSelectSection} ${SEC_2} ${UnSelectSection} ${SEC_3} ${UnSelectSection} ${SEC_4} ${UnSelectSection} ${SEC_6} ${SetSectionExtract} ${SEC_7} ${MakeGroupReadOnly} ${GRP_2} ${SetSectionGroup} ${GRP_1} goto exit condition2: ${SelectSection} ${SEC_1} ${SelectSection} ${SEC_5} ${SelectSection} ${SEC_2} ${SelectSection} ${SEC_3} ${UnSelectSection} ${SEC_4} ${UnSelectSection} ${SEC_6} ${SetSectionExtract} ${SEC_7} ${MakeGroupReadOnly} ${GRP_2} ${SetSectionGroup} ${GRP_1} exit: FunctionEnd Function .onSelChange StrCmp '$nakedking' '1' +1 +2 MessageBox MB_OK|MB_ICONINFORMATION 'The king is naked' IDOK end ${SetSectionGroup} ${GRP_1} ${SetSectionGroup} ${GRP_2} end: FunctionEnd