
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2611 212acab6-be3b-0410-9dea-997c60f758d6
115 lines
No EOL
2.4 KiB
NSIS
115 lines
No EOL
2.4 KiB
NSIS
; Some sections defines
|
|
|
|
; Include in your script using:
|
|
; !include "Sections.nsh"
|
|
|
|
!ifndef SECTIONS_NSH_INCLUDED
|
|
|
|
!define SECTIONS_NSH_INCLUDED
|
|
|
|
!define SF_SELECTED 1
|
|
!define SF_SUBSEC 2
|
|
!define SF_SUBSECEND 4
|
|
!define SF_BOLD 8
|
|
!define SF_RO 16
|
|
!define SF_EXPAND 32
|
|
!define SF_PSELECTED 64
|
|
|
|
!define SECTION_OFF 0xFFFFFFFE
|
|
|
|
!macro SelectSection SECTION
|
|
Push $0
|
|
SectionGetFlags "${SECTION}" $0
|
|
IntOp $0 $0 | ${SF_SELECTED}
|
|
SectionSetFlags "${SECTION}" $0
|
|
Pop $0
|
|
!macroend
|
|
|
|
!macro UnselectSection SECTION
|
|
Push $0
|
|
SectionGetFlags "${SECTION}" $0
|
|
IntOp $0 $0 & ${SECTION_OFF}
|
|
SectionSetFlags "${SECTION}" $0
|
|
Pop $0
|
|
!macroend
|
|
|
|
# if section selected, will unselect, if unselected, will select
|
|
!macro ReverseSection SECTION
|
|
Push $0
|
|
SectionGetFlags "${SECTION}" $0
|
|
IntOp $0 $0 ^ ${SF_SELECTED}
|
|
SectionSetFlags "${SECTION}" $0
|
|
Pop $0
|
|
!macroend
|
|
|
|
; For details about SetSectionInInstType and ClearSectionInInstType, see
|
|
; http://nsis.sourceforge.net/archive/nsisweb.php?page=287
|
|
|
|
!define INSTTYPE_1 1
|
|
!define INSTTYPE_2 2
|
|
!define INSTTYPE_3 4
|
|
!define INSTTYPE_4 8
|
|
!define INSTTYPE_5 16
|
|
!define INSTTYPE_6 32
|
|
!define INSTTYPE_7 64
|
|
!define INSTTYPE_8 128
|
|
|
|
!macro SetSectionInInstType SECTION_NAME WANTED_INSTTYPE
|
|
Push $0
|
|
SectionGetInstTypes "${SECTION_NAME}" $0
|
|
IntOp $0 $0 | ${WANTED_INSTTYPE}
|
|
SectionSetInstTypes "${SECTION_NAME}" $0
|
|
Pop $0
|
|
!macroend
|
|
|
|
!macro ClearSectionInInstType SECTION_NAME WANTED_INSTTYPE
|
|
Push $0
|
|
Push $1
|
|
SectionGetInstTypes "${SECTION_NAME}" $0
|
|
StrCpy $1 ${WANTED_INSTTYPE}
|
|
IntOp $1 $1 ~
|
|
IntOp $0 $0 & $1
|
|
SectionSetInstTypes "${SECTION_NAME}" $0
|
|
Pop $1
|
|
Pop $0
|
|
!macroend
|
|
|
|
# more macros by derekrprice
|
|
|
|
; Set one or more BITS in SECTION's flags.
|
|
!macro SetSectionFlag SECTION BITS
|
|
Push $R0
|
|
SectionGetFlags "${SECTION}" $R0
|
|
IntOp $R0 $R0 | "${BITS}"
|
|
SectionSetFlags "${SECTION}" $R0
|
|
Pop $R0
|
|
!macroend
|
|
|
|
; Clear one or more BITS in SECTION's flags.
|
|
!macro ClearSectionFlag SECTION BITS
|
|
Push $R0
|
|
Push $R1
|
|
SectionGetFlags "${SECTION}" $R0
|
|
IntOp $R1 "${BITS}" ~
|
|
IntOp $R0 $R0 & $R1
|
|
SectionSetFlags "${SECTION}" $R0
|
|
Pop $R1
|
|
Pop $R0
|
|
!macroend
|
|
|
|
; Check if one or more BITS in SECTION's flags are set.
|
|
; If they are, jump to JUMPIFSET
|
|
; If not, jump to JUMPIFNOTSET
|
|
!macro SectionFlagIsSet SECTION BITS JUMPIFSET JUMPIFNOTSET
|
|
Push $R0
|
|
SectionGetFlags "${SECTION}" $R0
|
|
IntOp $R0 $R0 & "${BITS}"
|
|
IntCmp $R0 "${BITS}" +3
|
|
Pop $R0
|
|
StrCmp "" "${JUMPIFNOTSET}" +3 "${JUMPIFNOTSET}"
|
|
Pop $R0
|
|
Goto "${JUMPIFSET}"
|
|
!macroend
|
|
|
|
|
|
!endif |