SectionsFlags: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
mNo edit summary
(use attach, not a manual link)
 
(One intermediate revision by one other user not shown)
Line 5: Line 5:


== Description ==
== Description ==
These macros can remember or set section flags.
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 ==
== Usage ==
<highlight-nsis>
<highlight-nsis>
  Section "Required"
    SectionIn RO
    Call Uninstall
  SectionEnd
  Insert code (Sections) here...
   Section "-"
   Section "-"
     ${SectionWriteReg} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
     ${SectionWriteReg} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
Line 19: Line 26:
   Function Uninstall
   Function Uninstall
     ${SectionGetValues} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
     ${SectionGetValues} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
    ${Section} ${Section Index}
      ${Repair}
        insert code here...
      ${Remove}
        insert code here...
    ${SectionEnd}
   FunctionEnd
   FunctionEnd


Line 34: Line 48:
; Section define/macro header file
; Section define/macro header file
; See this header file for more info
; See this header file for more info
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SectionsFlags_exam"
!include ".\SectionFunc.nsh"
 
!include "SectionFunc.nsh"
;${SectionReadReg}
;${SectionReadReg}
${SectionResetFlags}
${SectionResetFlags}
${SectionWriteReg}
${SectionWriteReg}


!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SectionsFlags_exam"
;--------------------------------
;--------------------------------


Line 50: Line 64:


; Pages
; Pages
Page components
Page components
Page instfiles
Page instfiles
Line 63: Line 76:
SectionEnd
SectionEnd


Section "Group 1 - Option 1" g1o1
Section "Section 1" sec1
  SectionGetText ${g1o1} $0
   SectionGetText ${sec1} $0
  DetailPrint "Installed Section $0"
   DetailPrint "Installed $0"
SectionEnd
 
Section /o "Group 1 - Option 2" g1o2
   SectionGetText ${g1o2} $0
   DetailPrint "Installed Section $0"
SectionEnd
SectionEnd


Section /o "Group 1 - Option 3" g1o3
Section /o "Section 2" sec2
   SectionGetText ${g1o3} $0
   SectionGetText ${sec2} $0
   DetailPrint "Installed Section $0"
   DetailPrint "Installed $0"
SectionEnd
SectionEnd


Section "Group 2 - Option 1" g2o1
Section /o "Section 3" sec3
  SectionGetText ${g2o1} $0
   SectionGetText ${sec3} $0
  DetailPrint "Installed Section $0"
   DetailPrint "Installed $0"
SectionEnd
 
Section /o "Group 2 - Option 2" g2o2
  SectionGetText ${g2o2} $0
  DetailPrint "Installed Section $0"
SectionEnd
 
Section /o "Group 2 - Option 3" g2o3
   SectionGetText ${g2o3} $0
   DetailPrint "Installed Section $0"
SectionEnd
SectionEnd


Line 98: Line 96:


Function .onInit
Function .onInit
  ${SectionResetFlags} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
${SectionResetFlags} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
FunctionEnd
FunctionEnd


Line 104: Line 102:


   ${SectionGetValues} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
   ${SectionGetValues} HKLM "${PRODUCT_UNINST_KEY}" "Sections"
 
  ${Section} ${g2o3}
    ${Repair}
      DetailPrint "Repaired Group 2 - Option 3"
    ${Remove}
      DetailPrint "Removed Group 2 - Option 3"
  ${SectionEnd}
 
  ${Section} ${g2o2}
    ${Repair}
      DetailPrint "Repaired Group 2 - Option 2"
    ${Remove}
      DetailPrint "Removed Group 2 - Option 2"
  ${SectionEnd}
  ${Section} ${g2o1}
    ${Repair}
      DetailPrint "Repaired Group 2 - Option 1"
    ${Remove}
      DetailPrint "Removed Group 2 - Option 1"
  ${SectionEnd}


   ${Section} ${g1o3}
   ${Section} ${sec1}
     ${Repair}
     ${Repair}
       DetailPrint "Repaired Group 1 - Option 3"
       DetailPrint "Repaired Section 1"
     ${Remove}
     ${Remove}
       DetailPrint "Removed Group 1 - Option 3"
       DetailPrint "REMOVED Section 1"
   ${SectionEnd}
   ${SectionEnd}


   ${Section} ${g1o2}
   ${Section} ${sec2}
     ${Repair}
     ${Repair}
       DetailPrint "Repaired Group 1 - Option 2"
       DetailPrint "Repaired Section 2"
     ${Remove}
     ${Remove}
       DetailPrint "Removed Group 1 - Option 2"
       DetailPrint "REMOVED Section 2"
   ${SectionEnd}
   ${SectionEnd}


   ${Section} ${g1o1}
   ${Section} ${sec3}
     ${Repair}
     ${Repair}
       DetailPrint "Repaired Group 1 - Option 1"
       DetailPrint "Repaired Section 3"
     ${Remove}
     ${Remove}
       DetailPrint "Removed Group 1 - Option 1"
       DetailPrint "REMOVED Section 3"
   ${SectionEnd}
   ${SectionEnd}



Latest revision as of 18:17, 19 January 2006

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