\C{scriptref} Scripting Reference \H{fileformat} Script File Format A NSIS Script File (.nsi) is just a text file with script code. \\Commands\\ Commands lines are in the format 'command [parameters]' \c File "myfile" \\Comments\\ Lines beginning with ; or # are comments. You can put comments after commands. You can also use C-style comments to comment one or more lines. \c ; Comment \c # Comment \c \c /* \c Comment \c Comment \c */ \c \c Name /* comment */ mysetup \c \c File "myfile" ; Comment If you want a parameter to start with ; or # put it in quotes. \\Plug-ins\\ To call a plug-in, use 'plugin::command [parameters]'. For more info see \R{plugindlls}{Plug-in DLLs}. \c nsExec::Exec "myfile" \\Numbers\\ For parameters that are treated as numbers, use decimal (the number) or hexadecimal (with 0x prepended to it, i.e. 0x12345AB), or octal (numbers beginning with a 0 and no x). Colors should be set in hexadecimal RGB format, like HTML but without the #. \c IntCmp 1 0x1 lbl_equal \c \c SetCtlColors $HWND CCCCCC \\Strings\\ To represent strings that have spaces, use quotes: \c MessageBox MB_OK "Hi there!" Quotes only have the property of containing a parameter if they begin the parameter. They can be either single quotes, double quotes, or the backward single quote. You can escape quotes using $\\: \c MessageBox MB_OK "I'll be happy" ; this one puts a ' inside a string \c MessageBox MB_OK 'And he said to me "Hi there!"' ; this one puts a " inside a string \c MessageBox MB_OK `And he said to me "I'll be fucked!"` ; this one puts both ' and "s inside a string \c MessageBox MB_OK "$\"A quote from a wise man$\" said the wise man" ; this one shows escaping of quotes It is also possible to put newlines, tabs etc. in a string using $\\r, $\\n, $\\t etc. \R{varstrings}{More information...} \\Variables\\ Variables start with $. User variables should be declared. \c Var MYVAR \c \c StrCpy $MYVAR "myvalue" \R{variables}{More information...} \\Long commands\\ To extend a command over multiple lines, use a backslash (\\) at the end of the line. The next line will effectively be concatenated to the end of it. For example: \c CreateShortCut "$SMPROGRAMS\NSIS\ZIP2EXE project workspace.lnk" \ \c "$INSTDIR\source\zip2exe\zip2exe.dsw" \c \c MessageBox MB_YESNO|MB_ICONQUESTION \ \c "Do you want to remove all files in the folder? \ \c (If you have anything you created that you want \ \c to keep, click No)" \ \c IDNO NoRemoveLabel \\Configuration file\\ If a file named "nsisconf.nsh" in the same directory as makensis.exe exists, it will be included by default before any scripts (unless the /NOCONFIG command line parameter is used).