diff --git a/Include/Sections.nsh b/Include/Sections.nsh index 858973a8..af101daa 100644 --- a/Include/Sections.nsh +++ b/Include/Sections.nsh @@ -42,4 +42,36 @@ 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 + !endif \ No newline at end of file