===== NSIS Installer =====
http://nsis.sourceforge.net/Main_Page
An old installer.
Use Inno Setup if possible:
http://jrsoftware.org/isinfo.php \\
http://sourceforge.net/projects/istool/
=== Command Line parameters ===
Read command line parameters
${GetOptions} "[Parameters]" "[Option]" $var
"[Parameters]" ; command line parameters
;
"[Option]" ; option name
;
$var ; Result: option string
**Example**
Section
${GetOptions} "-INSTDIR=C:\Program Files\Common Files -SILENT=yes" "-INSTDIR=" $R0
;$R0=C:\Program Files\Common Files
SectionEnd
=== Multiple Files via include ===
merge multiple files via **include**
This command will include 'file' as if it was part of the original script. Note that if a file is included in another directory, the current directory is still where the script was compiled from (not where the included file resides). If the compiler can't find the file it will look for it in every include directory. See !addincludedir for more information. If the /nonfatal switch is used and no files are found, a warning will be issued instead of an error.
!include WinMessages.nsh
!include Library.nsh
!include C:\MyConfig.nsi
!include ..\MyConfig.nsh
!include /NONFATAL file_that_may_exist_or_not.nsh
Use **!addincludedir** to point to a folder where some NSIS Scripts may be found for inclusion.
=== Variables ===
The **$** is prepended to the variables: **$varName** \\
Variables are defined once. \\
Then they are overridden via **StrCopy** \\
**Example**
Var example
Function testVar
Var /GLOBAL example2
StrCpy $example "example value"
StrCpy $example2 "another example value"
FunctionEnd
==== Sections ====
The script is devided in sections.
Each section matches a logical unit - a logical unit. E.g. a decision, a set of commands etc.
# Installer sections
Section /o Sales SEC0000
SetOutPath $INSTDIR
SetOverwrite on
File "componentDummyFiles\sales.txt"
SectionEnd
Section Tariff SEC0001
SetOutPath $INSTDIR
SetOverwrite on
File "componentDummyFiles\tariff.txt"
SectionEnd
Section /o Customer SEC0002
SetOutPath $INSTDIR
SetOverwrite on
File "componentDummyFiles\customer.txt"
SectionEnd
Function .onSelChange
MessageBox MB_OK "onSelChange"
FunctionEnd
Rendered as checkboxes:
{{http://i520.photobucket.com/albums/w327/schajtan/2014-12-09_13-46-46_zpsd25039ed.png}}
you may implement callbacks which are triggered when the seleciton is changed.
Function .onSelChange
MessageBox MB_OK "onSelChange"
FunctionEnd
you may change the state of checkboxes programmatically:
; executed on initialization of wizard
Function .onInit
IfSilent 0 silentCodeEnd ; executed in silent mode only
!insertmacro SetSectionFlag ${SEC0000} ${SF_SELECTED}
!insertmacro SetSectionFlag ${SEC0001} ${SF_SELECTED}
!insertmacro SetSectionFlag ${SEC0002} ${SF_SELECTED}
silentCodeEnd: ; silent block ENDS here
FunctionEnd