⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sections.nsh

📁 数据仓库工具
💻 NSH
字号:
; 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -