- Each section contains zero or more instructions.
- Sections are executed in order by the resulting installer, and if a component page is used, the user will have the option of disabling/enabling each visible section.
- If a section's name is 'Uninstall' or is prefixed with 'un.', it's an uninstaller section.
4.6.1.1 AddSize
Tells the installer that the current section needs an additional "size_kb" kilobytes of disk space. Only valid within a section (will have no effect outside of a section or in a function).
- Section
- AddSize 500
- SectionEnd
4.6.1.2 Section
- [/o] [([!]|[-])section_name] [section_index_output]
Begins and opens a new section. If sectionname is empty, omitted, or begins with a -, then it is a hidden section and the user will not have the option of disabling it. If the section name is 'Uninstall' or is prefixed with 'un.', then it is a an uninstaller section. If _section_index_output is specified, the parameter will be !defined with the section index (can be used with etc). If the section name begins with a !, the section will be displayed as bold. If the /o switch is specified, the section will be unselected by default.
- Section "-hidden section"
- SectionEnd
- Section # hidden section
- SectionEnd
- Section "!bold section"
- SectionEnd
- Section /o "optional"
- SectionEnd
- Section "install something" SEC_IDX
- SectionEnd
- Function .onInit
- SectionGetText ${sec2_id} $0
- MessageBox MB_OK "name of ${sec2_id}:$\n$0" # will incorrectly display 'name of ${sec2_id}: test1'
- # plus a warning stating:
- # unknown variable/constant "{sec2_id}" detected, ignoring
- FunctionEnd
- Section test1 sec1_id
- SectionEnd
- Section test2 sec2_id
- SectionEnd
4.6.1.3 SectionEnd
This command closes the current open section.
4.6.1.4 SectionInstType
- insttype_index [insttype_index [...]] [RO]
This command specifies which install types (see InstType) the current section defaults to the enabled state in. Multiple commands can be specified (they are combined). If you specify RO as a parameter, then the section will be read-only, meaning the user won't be able to change its state.
- InstType "Minimal" IT_MIN
- Section "Help"
- SectionInstType ${IT_FULL} ${IT_MIN}
- SectionEnd
- Section "Bonus content"
- SectionInstType ${IT_FULL}
- SectionEnd
4.6.1.5 SectionIn
4.6.1.6 SectionGroup
- [/e] section_group_name [index_output]
This command inserts a section group. The section group must be closed with SectionGroupEnd, and should contain 1 or more sections. If the section group name begins with a !, its name will be displayed with a bold font. If /e is present, the section group will be expanded by default. If index_output is specified, the parameter will be !defined with the section index (can be used with etc). If the name is prefixed with 'un.' the section group is an uninstaller section group.
- SectionGroup "some stuff"
- Section "a section"
- SectionEnd
- Section "another section"
- SectionEnd
- SectionGroupEnd
4.6.1.7 SectionGroupEnd
Closes a section group opened with SectionGroup.
4.6.2 Uninstall Section
A special named 'Uninstall' must be created in order to generate an uninstaller. This section should remove all files, registry keys etc etc that were installed by the installer, from the system. Here is an example of a simple uninstall section:
- Section "Uninstall"
- Delete $INSTDIR\Uninst.exe ; delete self (see explanation below why this works)
- Delete $INSTDIR\myApp.exe
- RMDir $INSTDIR
- DeleteRegKey HKLM SOFTWARE\myApp
Note that in uninstaller code, $INSTDIR contains the directory where the uninstaller lies. It does not necessarily contain the same value it contained in the installer.