SectionsFlags: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 3: Line 3:
== Description ==
== Description ==
These macros use to remember and restate Section Flags.
These macros use to remember and restate Section Flags.
Macro works only on NSIS 2.10.
 
Macros works only on NSIS 2.10 or higher.
 
Download link: http://forums.winamp.com/attachment.php?s=c7b247e1b5b6706e63dda436ca6032ca&postid=1786717


== Usage ==
== Usage ==
Line 104: Line 107:
   ; $R0 stores the sections old flags
   ; $R0 stores the sections old flags
   ; $R1 stores the sections new flags
   ; $R1 stores the sections new flags
  ; $0 - $3 used by macro


   ${Section} 6 $R0 $R1
   ${Section} 6 $R0 $R1

Revision as of 17:12, 18 October 2005

Author: Tu Tong (talk, contrib)


Description

These macros use to remember and restate Section Flags.

Macros works only on NSIS 2.10 or higher.

Download link: http://forums.winamp.com/attachment.php?s=c7b247e1b5b6706e63dda436ca6032ca&postid=1786717

Usage

  !insertmacro SectionWriteReg HKLM "${PRODUCT_UNINST_KEY}" "Sections"
 
  Function .onInit
 
    !insertmacro SectionReSetFlags HKLM "${PRODUCT_UNINST_KEY}" "Sections"
 
  FunctionEnd
 
  Function Uninstall
 
    !insertmacro SectionReadReg HKLM "${PRODUCT_UNINST_KEY}" "Sections"
 
  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 "SectionFlags.nsh"
!include "SectionFlagsFuncs.nsh"
 
!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
  DetailPrint "Installed Section 0"
SectionEnd
 
Section "Group 1 - Option 1" g1o1
  DetailPrint "Installed Section 1"
SectionEnd
 
Section /o "Group 1 - Option 2" g1o2
  DetailPrint "Installed Section 2"
SectionEnd
 
Section /o "Group 1 - Option 3" g1o3
  DetailPrint "Installed Section 3"
SectionEnd
 
Section "Group 2 - Option 1" g2o1
  DetailPrint "Installed Section 4"
SectionEnd
 
Section /o "Group 2 - Option 2" g2o2
  DetailPrint "Installed Section 5"
SectionEnd
 
Section /o "Group 2 - Option 3" g2o3
  DetailPrint "Installed Section 6"
SectionEnd
 
Section "-"
 DetailPrint "Installed Section 7"
 !insertmacro SectionWriteReg HKLM "${PRODUCT_UNINST_KEY}" "Sections"
SectionEnd
 
 
Function .onInit
 
  !insertmacro SectionReSetFlags HKLM "${PRODUCT_UNINST_KEY}" "Sections"
 
FunctionEnd
 
 
Function Uninstall
  !insertmacro SectionReadReg $R0 $R1 HKLM "${PRODUCT_UNINST_KEY}" "Sections"
 
  ; $R0 stores the sections old flags
  ; $R1 stores the sections new flags
  ; $0 - $3 used by macro
 
  ${Section} 6 $R0 $R1
    ${Repair}
      DetailPrint "Repair Section 6"
    ${Remove}
      DetailPrint "Remove Section 6"
  ${SectionEnd}
 
  ${Section} 5 $R0 $R1
    ${Repair}
      DetailPrint "Repair Section 5"
    ${Remove}
      DetailPrint "Remove Section 5"
  ${SectionEnd}
 
  ${Section} 4 $R0 $R1
    ${Repair}
      DetailPrint "Repair Section 4"
    ${Remove}
      DetailPrint "Remove Section 4"
  ${SectionEnd}
 
  ${Section} 3 $R0 $R1
    ${Repair}
      DetailPrint "Repair Section 3"
    ${Remove}
      DetailPrint "Remove Section 3"
  ${SectionEnd}
 
  ${Section} 2 $R0 $R1
    ${Repair}
      DetailPrint "Repair Section 2"
    ${Remove}
      DetailPrint "Remove Section 2"
  ${SectionEnd}
 
  ${Section} 1 $R0 $R1
    ${Repair}
      DetailPrint "Repair Section 1"
    ${Remove}
      DetailPrint "Remove Section 1"
  ${SectionEnd}
 
  ${Section} 0 $R0 $R1
    ${Repair}
      DetailPrint "Repair Section 0"
    ${Remove}
      DetailPrint "Remove Section 0"
  ${SectionEnd}
 
  DetailPrint "*******************************"
FunctionEnd