SectionsFlags

From NSIS Wiki
Jump to navigationJump to search
Author: Tu Tong (talk, contrib)


Download Link

SectionFlags.zip (3 KB)

Description

These macros can remember or set section flags. This example show you how to get section flags and remember in windows registry after first install, installer will reset all the flags on next time to run installer. Funtion Uninstall is called before install files sections...

Usage

  Section "Required"
    SectionIn RO
    Call Uninstall
  SectionEnd
 
  Insert code (Sections) here...
 
  Section "-"
    ${SectionWriteReg} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
  SectionEnd
 
  Function .onInit
    ${SectionResetFlags} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
  FunctionEnd
 
  Function Uninstall
    ${SectionGetValues} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
 
    ${Section} ${Section Index}
      ${Repair}
        insert code here...
      ${Remove}
        insert code here...
    ${SectionEnd}
  FunctionEnd

Example

; SectionsFlags.nsi
;
; This example demonstrates how to control section flags.
 
;--------------------------------
 
; Section define/macro header file
; See this header file for more info
!include ".\SectionFunc.nsh"
;${SectionReadReg}
${SectionResetFlags}
${SectionWriteReg}
 
 
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SectionsFlags_exam"
;--------------------------------
 
Name "SectionsFlags Example"
OutFile "SectionsFlags_exam.exe"
 
ShowInstDetails show
;--------------------------------
 
; Pages
Page components
Page instfiles
 
;--------------------------------
 
; Sections
 
Section !Required
  SectionIn RO
  Call Uninstall
SectionEnd
 
Section "Section 1" sec1
  SectionGetText ${sec1} $0
  DetailPrint "Installed $0"
SectionEnd
 
Section /o "Section 2" sec2
  SectionGetText ${sec2} $0
  DetailPrint "Installed $0"
SectionEnd
 
Section /o "Section 3" sec3
  SectionGetText ${sec3} $0
  DetailPrint "Installed $0"
SectionEnd
 
Section "-"
  ${SectionWriteReg} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
SectionEnd
 
Function .onInit
 ${SectionResetFlags} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
FunctionEnd
 
Function Uninstall
 
  ${SectionGetValues} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
 
  ${Section} ${sec1}
    ${Repair}
      DetailPrint "Repaired Section 1"
    ${Remove}
      DetailPrint "REMOVED Section 1"
  ${SectionEnd}
 
  ${Section} ${sec2}
    ${Repair}
      DetailPrint "Repaired Section 2"
    ${Remove}
      DetailPrint "REMOVED Section 2"
  ${SectionEnd}
 
  ${Section} ${sec3}
    ${Repair}
      DetailPrint "Repaired Section 3"
    ${Remove}
      DetailPrint "REMOVED Section 3"
  ${SectionEnd}
 
  DetailPrint "*******************************"
FunctionEnd