436c436
< <p>Labels are the targets of Goto instructions, or of the various branching instructions (such as <a href="Chapter4.html#4.9.4.9">IfErrors</a>, <a href="Chapter4.html#4.9.4.15">MessageBox</a>, <a href="Chapter4.html#4.9.4.10">IfFileExists</a>, and <a href="Chapter4.html#4.9.4.19">StrCmp</a>). Labels must be within a Section or a Function. Labels are local in scope, meaning they are only accessible from within the Section or Function that they reside in. To declare a label, simply use:</p>
---
> <p>Labels are the targets of Goto instructions, or of the various branching instructions (such as <a href="Chapter4.html#4.9.4.9">IfErrors</a>, <a href="Chapter4.html#4.9.4.15">MessageBox</a>, <a href="Chapter4.html#4.9.4.10">IfFileExists</a>, and <a href="Chapter4.html#4.9.4.19">StrCmp</a>). Labels must be within a <a href="Chapter4.html#4.6.1.2">Section</a> or a <a href="Chapter4.html#4.7.1.1">Function</a>. Labels are local in scope, meaning they are only accessible from within the <a href="Chapter4.html#4.6.1.2">Section</a> or <a href="Chapter4.html#4.7.1.1">Function</a> that they reside in. To declare a label, simply use:</p>
440c440
< <p>Labels cannot begin with a -, +, !, $, or 0-9. When specifying labels for the various instructions that require them, remember that both an empty string (&quot;&quot;) and 0 both represent the next instruction (meaning no Goto will occur). Labels beginning with a period (.) are global, meaning you can jump to them from any function or section (though you cannot jump to an uninstall global label from the installer, and vice versa).</p>
---
> <p>Labels cannot begin with a -, +, !, $, or 0-9. When specifying labels for the various instructions that require them, remember that both an empty string (&quot;&quot;) and 0 both represent the next instruction (meaning no <a href="Chapter4.html#4.9.4.7">Goto</a> will occur). Labels beginning with a period (.) are global, meaning you can jump to them from any function or section (though you cannot jump to an uninstall global label from the installer, and vice versa).</p>
611c611
< <li>Each section contains zero or more instructions.</li><li>Sections are executed in order by the resulting installer, and if ComponentText is set, the user will have the option of disabling/enabling each visible section.</li><li>If a section's name is 'Uninstall' or is prefixed with 'un.', it's an uninstaller section.</li></ul>
---
> <li>Each section contains zero or more instructions.</li><li>Sections are executed in order by the resulting installer, and if <a href="Chapter4.html#4.8.1.11">ComponentText</a> is set, the user will have the option of disabling/enabling each visible section.</li><li>If a section's name is 'Uninstall' or is prefixed with 'un.', it's an uninstaller section.</li></ul>
704c704
< <p>A special Section 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:</p>
---
> <p>A special <a href="Chapter4.html#4.6.1.2">Section</a> 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:</p>
718c718
< <p>Functions are similar to Sections in that they contain zero or more instructions. User functions are not called by the installer directly, instead they are called from Sections using the Call instruction. Callback functions will be called by the installer when a certain event occurs.</p>
---
> <p>Functions are similar to Sections in that they contain zero or more instructions. User functions are not called by the installer directly, instead they are called from Sections using the <a href="Chapter4.html#4.9.4.2">Call</a> instruction. Callback functions will be called by the installer when a certain event occurs.</p>
929c929
< <p>The commands below all adjust attributes of the installer. These attributes control how the installer looks and functions, including which pages are present in the installer, as what text is displayed in each part of each page, how the installer is named, what icon the installer uses, the default installation directory, what file it writes out, and more. Note that these attributes can be set anywhere in the file except in a Section or Function.</p>
---
> <p>The commands below all adjust attributes of the installer. These attributes control how the installer looks and functions, including which pages are present in the installer, as what text is displayed in each part of each page, how the installer is named, what icon the installer uses, the default installation directory, what file it writes out, and more. Note that these attributes can be set anywhere in the file except in a <a href="Chapter4.html#4.6.1.2">Section</a> or <a href="Chapter4.html#4.7.1.1">Function</a>.</p>
936c936
< <p>Adds a branding image on the top, bottom, left, or right of the installer. Its size will be set according to the width/height specified, the installer width/height and the installer font. The final size will not always be what you requested; have a look at the output of the command for the actual size. Because this depends on the installer font, you should use SetFont before AddBrandingImage. The default padding value is 2.</p>
---
> <p>Adds a branding image on the top, bottom, left, or right of the installer. Its size will be set according to the width/height specified, the installer width/height and the installer font. The final size will not always be what you requested; have a look at the output of the command for the actual size. Because this depends on the installer font, you should use <a href="Chapter4.html#4.8.1.33">SetFont</a> before AddBrandingImage. The default padding value is 2.</p>
1108c1108
< <p>This attribute tells the installer to check a string in the registry, and use it for the install dir if that string is valid. If this attribute is present, it will override the InstallDir attribute if the registry key is valid, otherwise it will fall back to the InstallDir default. When querying the registry, this command will automatically remove any quotes. If the string ends in &quot;.exe&quot;, it will automatically remove the filename component of the string (i.e. if the string is &quot;C:\program files\poop\poop.exe&quot;, it will know to use &quot;C:\program files\poop&quot;). For more advanced install directory configuration, set $INSTDIR in .onInit.</p>
---
> <p>This attribute tells the installer to check a string in the registry, and use it for the install dir if that string is valid. If this attribute is present, it will override the <a href="Chapter4.html#4.8.1.21">InstallDir</a> attribute if the registry key is valid, otherwise it will fall back to the <a href="Chapter4.html#4.8.1.21">InstallDir</a> default. When querying the registry, this command will automatically remove any quotes. If the string ends in &quot;.exe&quot;, it will automatically remove the filename component of the string (i.e. if the string is &quot;C:\program files\poop\poop.exe&quot;, it will know to use &quot;C:\program files\poop&quot;). For more advanced install directory configuration, set $INSTDIR in .onInit.</p>
1118c1118
< <p>Valid values for flag are &quot;smooth&quot; (smooth the progress bar) or &quot;colored&quot; (color the progress bar with the colors set by InstallColors. Examples: &quot;InstProgressFlags&quot; (default old-school windows look), &quot;InstProgressFlags smooth&quot; (new smooth look), &quot;InstProgressFlags smooth colored&quot; (colored smooth look whee). Note: neither &quot;smooth&quot; or &quot;colored&quot; work with <a href="Chapter4.html#4.8.1.46">XPStyle</a> on when the installer runs on Windows XP with a modern theme.</p>
---
> <p>Valid values for flag are &quot;smooth&quot; (smooth the progress bar) or &quot;colored&quot; (color the progress bar with the colors set by <a href="Chapter4.html#4.8.1.20">InstallColors</a>. Examples: &quot;InstProgressFlags&quot; (default old-school windows look), &quot;InstProgressFlags smooth&quot; (new smooth look), &quot;InstProgressFlags smooth colored&quot; (colored smooth look whee). Note: neither &quot;smooth&quot; or &quot;colored&quot; work with <a href="Chapter4.html#4.8.1.46">XPStyle</a> on when the installer runs on Windows XP with a modern theme.</p>
1369c1369
< <p>This command sets the file date/time saving flag which is used by the File command to determine whether or not to save the last write date and time of the file, so that it can be restored on installation. Valid flags are 'on' and 'off'. 'on' is the default.</p>
---
> <p>This command sets the file date/time saving flag which is used by the <a href="Chapter4.html#4.9.1.5">File</a> command to determine whether or not to save the last write date and time of the file, so that it can be restored on installation. Valid flags are 'on' and 'off'. 'on' is the default.</p>
1374c1374
< <p>This command sets the overwrite flag which is used by the <a href="Chapter4.html#4.9.1.5">File</a> command to determine whether or not the file should overwrite any existing files that are present. If overwriteflag is 'on', files are overwritten (this is the default). If overwriteflag is 'off', files that are already present are not overwritten. If overwriteflag is 'try', files are overwritten if possible (meaning that if the file is not able to be written to, it is skipped without any user interaction). If overwriteflag is 'ifnewer', then files are only overwritten if the existing file is older than the new file. If overwriteflag is 'ifdiff', then files are only overwritten if the existing file is older or newer than the new file. Note that when in 'ifnewer' or 'ifdiff' mode, the destination file's date is set, regardless of what SetDateSave is set to.</p>
---
> <p>This command sets the overwrite flag which is used by the <a href="Chapter4.html#4.9.1.5">File</a> command to determine whether or not the file should overwrite any existing files that are present. If overwriteflag is 'on', files are overwritten (this is the default). If overwriteflag is 'off', files that are already present are not overwritten. If overwriteflag is 'try', files are overwritten if possible (meaning that if the file is not able to be written to, it is skipped without any user interaction). If overwriteflag is 'ifnewer', then files are only overwritten if the existing file is older than the new file. If overwriteflag is 'ifdiff', then files are only overwritten if the existing file is older or newer than the new file. Note that when in 'ifnewer' or 'ifdiff' mode, the destination file's date is set, regardless of what <a href="Chapter4.html#4.8.2.7">SetDateSave</a> is set to.</p>
1452c1452
< <p>Execute the specified program and wait for the executed process to quit. See Exec for more information. If no output variable is specified ExecWait sets the error flag if the program executed returns a nonzero error code, or if there is an error. If an output variable is specified, ExecWait sets the variable with the exit code (and only sets the error flag if an error occurs; if an error occurs the contents of the user variable are undefined). Note, if the command could have spaces, you should put it in quotes to delimit it from parameters. e.g.: ExecWait '&quot;$INSTDIR\command.exe&quot; parameters'. If you don't put it in quotes it will <em>not</em> work on Windows 9x with or without parameters.</p>
---
> <p>Execute the specified program and wait for the executed process to quit. See <a href="Chapter4.html#4.9.1.2">Exec</a> for more information. If no output variable is specified ExecWait sets the error flag if the program executed returns a nonzero error code, or if there is an error. If an output variable is specified, ExecWait sets the variable with the exit code (and only sets the error flag if an error occurs; if an error occurs the contents of the user variable are undefined). Note, if the command could have spaces, you should put it in quotes to delimit it from parameters. e.g.: ExecWait '&quot;$INSTDIR\command.exe&quot; parameters'. If you don't put it in quotes it will <em>not</em> work on Windows 9x with or without parameters.</p>
1582c1582
< <p>Deletes a registry value. Valid values for root_key are listed under WriteRegStr. The error flag is set if the value could not be removed from the registry (or if it didn't exist to begin with).</p>
---
> <p>Deletes a registry value. Valid values for root_key are listed under <a href="Chapter4.html#4.9.2.16">WriteRegStr</a>. The error flag is set if the value could not be removed from the registry (or if it didn't exist to begin with).</p>
1589c1589
< <p>Set user variable $x with the name of the 'index'th registry key in root_key\Subkey. Valid values for root_key are listed under WriteRegStr. Returns an empty string if there are no more keys, and returns an empty string and sets the error flag if there is an error.</p>
---
> <p>Set user variable $x with the name of the 'index'th registry key in root_key\Subkey. Valid values for root_key are listed under <a href="Chapter4.html#4.9.2.16">WriteRegStr</a>. Returns an empty string if there are no more keys, and returns an empty string and sets the error flag if there is an error.</p>
1602c1602
< <p>Set user variable $x with the name of the 'index'th registry value in root_key\Subkey. Valid values for root_key are listed under WriteRegStr. Returns an empty string and sets the error flag if there are no more values or if there is an error.</p>
---
> <p>Set user variable $x with the name of the 'index'th registry value in root_key\Subkey. Valid values for root_key are listed under <a href="Chapter4.html#4.9.2.16">WriteRegStr</a>. Returns an empty string and sets the error flag if there are no more values or if there is an error.</p>
1648c1648
< <p>Reads a 32 bit DWORD from the registry into the user variable $x. Valid values for root_key are listed under WriteRegStr. The error flag will be set and $x will be set to an empty string (&quot;&quot; which is 0) if the DWORD is not present. If the value is present, but is not a DWORD, it will be read as a string and the error flag will be set.</p>
---
> <p>Reads a 32 bit DWORD from the registry into the user variable $x. Valid values for root_key are listed under <a href="Chapter4.html#4.9.2.16">WriteRegStr</a>. The error flag will be set and $x will be set to an empty string (&quot;&quot; which is 0) if the DWORD is not present. If the value is present, but is not a DWORD, it will be read as a string and the error flag will be set.</p>
1655c1655
< <p>Reads from the registry into the user variable $x. Valid values for root_key are listed under WriteRegStr. The error flag will be set and $x will be set to an empty string (&quot;&quot;) if the string is not present. If the value is present, but is of type REG_DWORD, it will be read and converted to a string and the error flag will be set.</p>
---
> <p>Reads from the registry into the user variable $x. Valid values for root_key are listed under <a href="Chapter4.html#4.9.2.16">WriteRegStr</a>. The error flag will be set and $x will be set to an empty string (&quot;&quot;) if the string is not present. If the value is present, but is of type REG_DWORD, it will be read and converted to a string and the error flag will be set.</p>
1672c1672
< <p>This command writes a block of binary data to the registry. Valid values for root_key are listed under WriteRegStr. Valuedata is in hexadecimal (e.g. DEADBEEF01223211151). The error flag is set if the binary data could not be written to the registry. If the registry key doesn't exist it will be created.</p>
---
> <p>This command writes a block of binary data to the registry. Valid values for root_key are listed under <a href="Chapter4.html#4.9.2.16">WriteRegStr</a>. Valuedata is in hexadecimal (e.g. DEADBEEF01223211151). The error flag is set if the binary data could not be written to the registry. If the registry key doesn't exist it will be created.</p>
1679c1679
< <p>This command writes a dword (32 bit integer) to the registry (a user variable can be specified). Valid values for root_key are listed under WriteRegStr. The error flag is set if the dword could not be written to the registry. If the registry key doesn't exist it will be created.</p>
---
> <p>This command writes a dword (32 bit integer) to the registry (a user variable can be specified). Valid values for root_key are listed under <a href="Chapter4.html#4.9.2.16">WriteRegStr</a>. The error flag is set if the dword could not be written to the registry. If the registry key doesn't exist it will be created.</p>
1707c1707
< <p>Calls a function named <em>function_name</em> inside a NSIS extension DLL, a plug-in. See the <a href="../Examples/Plugin/">example plugin</a> for how to make one. Extension DLLs can access the stack and variables. Note: To automatically extract and call plug-in DLLs, use a plug-in command instead of CallInstDLL.</p>
---
> <p>Calls a function named <em>function_name</em> inside a NSIS extension DLL, a plug-in. See the <a href="../Examples/Plugin/">example plugin</a> for how to make one. Extension DLLs can access the stack and variables. Note: To automatically extract and call plug-in DLLs, use a plug-in command instead of <a href="Chapter4.html#4.9.3.1">CallInstDLL</a>.</p>
1759c1759
< <p>This is similar to GetDLLVersion, only it acts on the system building the installer (it actually compiles into two StrCpy commands). Sets the two output variables with the DLL version information of the DLL on the build system.</p>
---
> <p>This is similar to <a href="Chapter4.html#4.9.3.5">GetDLLVersion</a>, only it acts on the system building the installer (it actually compiles into two <a href="Chapter4.html#4.9.8.1">StrCpy</a> commands). Sets the two output variables with the DLL version information of the DLL on the build system.</p>
1769c1769
< <p>This is similar to GetFileTime, only it acts on the system building the installer (it actually compiles into two StrCpy commands). Sets the two output variables with the file timestamp of the file on the build system.</p>
---
> <p>This is similar to <a href="Chapter4.html#4.9.3.7">GetFileTime</a>, only it acts on the system building the installer (it actually compiles into two <a href="Chapter4.html#4.9.8.1">StrCpy</a> commands). Sets the two output variables with the file timestamp of the file on the build system.</p>
1868c1868
< <p>Gets the address of the current instruction (the GetCurrentAddress) and stores it in the output user variable. This user variable then can be passed to Call or Goto.</p>
---
> <p>Gets the address of the current instruction (the GetCurrentAddress) and stores it in the output user variable. This user variable then can be passed to <a href="Chapter4.html#4.9.4.2">Call</a> or <a href="Chapter4.html#4.9.4.7">Goto</a>.</p>
1894c1894
< <p>Gets the address of the function and stores it in the output user variable. This user variable then can be passed to Call or Goto. Note that if you Goto an address which is the output of GetFunctionAddress, your function will never be returned to (when the function you Goto'd to returns, you return instantly).</p>
---
> <p>Gets the address of the function and stores it in the output user variable. This user variable then can be passed to <a href="Chapter4.html#4.9.4.2">Call</a> or <a href="Chapter4.html#4.9.4.7">Goto</a>. Note that if you <a href="Chapter4.html#4.9.4.7">Goto</a> an address which is the output of <a href="Chapter4.html#4.9.4.5">GetFunctionAddress</a>, your function will never be returned to (when the function you Goto'd to returns, you return instantly).</p>
1908c1908
< <p>Gets the address of the label and stores it in the output user variable. This user variable then can be passed to Call or Goto. Note that you may only call this with labels accessible from your function, but you can call it from anywhere (which is potentially dangerous). Note that if you Call the output of GetLabelAddress, code will be executed until it Return's (explicitly or implicitly at the end of a function), and then you will be returned to the statement after the Call.</p>
---
> <p>Gets the address of the label and stores it in the output user variable. This user variable then can be passed to <a href="Chapter4.html#4.9.4.2">Call</a> or <a href="Chapter4.html#4.9.4.7">Goto</a>. Note that you may only call this with labels accessible from your function, but you can call it from anywhere (which is potentially dangerous). Note that if you Call the output of GetLabelAddress, code will be executed until it Return's (explicitly or implicitly at the end of a function), and then you will be returned to the statement after the Call.</p>
1924c1924
< <p>If a user variable is specified, jumps to absolute address (generally you will want to get this value from a function like GetLabelAddress). Compiler flag commands and SectionIn aren't instructions so jumping over them has no effect.</p>
---
> <p>If a user variable is specified, jumps to absolute address (generally you will want to get this value from a function like <a href="Chapter4.html#4.9.4.6">GetLabelAddress</a>). Compiler flag commands and <a href="Chapter4.html#4.6.1.4">SectionIn</a> aren't instructions so jumping over them has no effect.</p>
1964c1964
< <p>Checks the reboot flag, and jumps to jump_if_set if the reboot flag is set, otherwise jumps to jump_if_not_set. The reboot flag can be set by Delete and Rename, or manually with <a href="Chapter4.html#4.9.11.2">SetRebootFlag</a>.</p>
---
> <p>Checks the reboot flag, and jumps to jump_if_set if the reboot flag is set, otherwise jumps to jump_if_not_set. The reboot flag can be set by <a href="Chapter4.html#4.9.1.1">Delete</a> and <a href="Chapter4.html#4.9.1.6">Rename</a>, or manually with <a href="Chapter4.html#4.9.11.2">SetRebootFlag</a>.</p>
2012c2012
< <p>If the return value of the MessageBox is return_check, the installer will Goto jumpto.</p>
---
> <p>If the return value of the MessageBox is return_check, the installer will <a href="Chapter4.html#4.9.4.7">Goto</a> jumpto.</p>
2089c2089
< <p>Reads a string (ANSI characters) from a file opened with FileOpen. The string is read until either a newline (or carriage return newline pair) occurs, or until a null byte is read, or until maxlen is met (if specified). By default, strings are limited to 1024 characters (a special build with larger NSIS_MAX_STRLEN can be compiled or downloaded). If the end of file is read and no more data is available, the output string will be empty, and the error flag will be set.</p>
---
> <p>Reads a string (ANSI characters) from a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. The string is read until either a newline (or carriage return newline pair) occurs, or until a null byte is read, or until maxlen is met (if specified). By default, strings are limited to 1024 characters (a special build with larger NSIS_MAX_STRLEN can be compiled or downloaded). If the end of file is read and no more data is available, the output string will be empty, and the error flag will be set.</p>
2106c2106
< <p>Reads a string (UTF-16LE characters) from a file opened with FileOpen. The string is read until either a newline (or carriage return newline pair) occurs, or until a null wide-character is read, or until maxlen is met (if specified). By default, strings are limited to 1024 characters (a special build with larger NSIS_MAX_STRLEN can be compiled or downloaded). If the end of file is read and no more data is available, the output string will be empty, and the error flag will be set.</p>
---
> <p>Reads a string (UTF-16LE characters) from a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. The string is read until either a newline (or carriage return newline pair) occurs, or until a null wide-character is read, or until maxlen is met (if specified). By default, strings are limited to 1024 characters (a special build with larger NSIS_MAX_STRLEN can be compiled or downloaded). If the end of file is read and no more data is available, the output string will be empty, and the error flag will be set.</p>
2119c2119
< <p>Reads a byte from a file opened with FileOpen. The byte is stored in the output as an integer (0-255). If the end of file is read and no more data is available, the output will be empty, and the error flag will be set.</p>
---
> <p>Reads a byte from a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. The byte is stored in the output as an integer (0-255). If the end of file is read and no more data is available, the output will be empty, and the error flag will be set.</p>
2135c2135
< <p>Reads a word (2-bytes) from a file opened with FileOpen. The word is stored in the output as an integer (0-65535). If the end of file is read and no more data is available, the output will be empty, and the error flag will be set.</p>
---
> <p>Reads a word (2-bytes) from a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. The word is stored in the output as an integer (0-65535). If the end of file is read and no more data is available, the output will be empty, and the error flag will be set.</p>
2149c2149
< <p>Seeks a file opened with FileOpen. If mode is omitted or specified as SET, the file is positioned to &quot;offset&quot;, relative to the beginning of the file. If mode is specified as CUR, then the file is positioned to &quot;offset&quot;, relative to the current file position. If mode is specified as END, then the file is positioned to &quot;offset&quot;, relative to the end of the file. If the final parameter &quot;new position&quot; is specified, the new file position will be stored to that variable.</p>
---
> <p>Seeks a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. If mode is omitted or specified as SET, the file is positioned to &quot;offset&quot;, relative to the beginning of the file. If mode is specified as CUR, then the file is positioned to &quot;offset&quot;, relative to the current file position. If mode is specified as END, then the file is positioned to &quot;offset&quot;, relative to the end of the file. If the final parameter &quot;new position&quot; is specified, the new file position will be stored to that variable.</p>
2163c2163
< <p>Writes an ANSI string to a file opened with FileOpen. If an error occurs writing, the error flag will be set.</p>
---
> <p>Writes an ANSI string to a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. If an error occurs writing, the error flag will be set.</p>
2179c2179
< <p>Writes a Unicode (UTF-16LE) string to a file opened with FileOpen. If an error occurs writing, the error flag will be set.</p>
---
> <p>Writes a Unicode (UTF-16LE) string to a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. If an error occurs writing, the error flag will be set.</p>
2191c2191
< <p>Writes the integer interpretation of 'string' to a file opened with FileOpen. Of course you can enter the integer value directly. The following code writes a &quot;Carriage Return / Line Feed&quot; - Enter to the file.</p>
---
> <p>Writes the integer interpretation of 'string' to a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. Of course you can enter the integer value directly. The following code writes a &quot;Carriage Return / Line Feed&quot; - Enter to the file.</p>
2203c2203
< <p>Writes the integer interpretation of 'string' as a WORD (2-bytes, range: 0-65535) to a file opened with FileOpen. Of course you can enter the integer value directly. The following code writes a &quot;Carriage Return / Line Feed&quot; - Enter to the file.</p>
---
> <p>Writes the integer interpretation of 'string' as a WORD (2-bytes, range: 0-65535) to a file opened with <a href="Chapter4.html#4.9.5.2">FileOpen</a>. Of course you can enter the integer value directly. The following code writes a &quot;Carriage Return / Line Feed&quot; - Enter to the file.</p>
2213c2213
< <p>Closes a search opened with FindFirst.</p>
---
> <p>Closes a search opened with <a href="Chapter4.html#4.9.5.13">FindFirst</a>.</p>
2218c2218
< <p>Performs a search for 'filespec', placing the first file found in filename_output (a user variable). It also puts the handle of the search into handle_output (also a user variable). If no files are found, both outputs are set to empty, and the error flag is set. Best used with FindNext and FindClose. Note that the filename output is without path.</p>
---
> <p>Performs a search for 'filespec', placing the first file found in filename_output (a user variable). It also puts the handle of the search into handle_output (also a user variable). If no files are found, both outputs are set to empty, and the error flag is set. Best used with <a href="Chapter4.html#4.9.5.14">FindNext</a> and <a href="Chapter4.html#4.9.5.12">FindClose</a>. Note that the filename output is without path.</p>
2232c2232
< <p>Continues a search began with FindFirst. handle should be the handle_output_variable returned by FindFirst. If the search is completed (there are no more files), filename_output is set to empty, and the error flag is set. Note that the filename output is without path.</p>
---
> <p>Continues a search began with FindFirst. handle should be the handle_output_variable returned by <a href="Chapter4.html#4.9.5.13">FindFirst</a>. If the search is completed (there are no more files), filename_output is set to empty, and the error flag is set. Note that the filename output is without path.</p>
2371c2371
< <p>When no parameter is specified, exchanges the top two elements of the stack. When a parameter is specified and is a user variable, exchanges the top element of the stack with the parameter. When a parameter is specified and is a positive integer, Exch will swap the item on the top of the stack with the item that is specified by the offset from the top of the stack in the parameter. If there are not enough items on the stack to accomplish the exchange, a fatal error will occur (to help you debug your code :).</p>
---
> <p>When no parameter is specified, exchanges the top two elements of the stack. When a parameter is specified and is a user variable, exchanges the top element of the stack with the parameter. When a parameter is specified and is a positive integer, <a href="Chapter4.html#4.9.9.1">Exch</a> will swap the item on the top of the stack with the item that is specified by the offset from the top of the stack in the parameter. If there are not enough items on the stack to accomplish the exchange, a fatal error will occur (to help you debug your code :).</p>
2548c2548
< <p>Retrieves the install types flags array of a section. See above explanation about SectionSetInstTypes for a description of how to deal with the output. The error flag will be set if the section index specified is out of range.</p>
---
> <p>Retrieves the install types flags array of a section. See above explanation about <a href="Chapter4.html#4.9.13.5">SectionSetInstTypes</a> for a description of how to deal with the output. The error flag will be set if the section index specified is out of range.</p>
2591c2591
< <p>Sets the current InstType. inst_type_idx should be between 0 and 31. The Error Flag is <b>not</b> set if an out of range InstType was used.</p>
---
> <p>Sets the current <a href="Chapter4.html#4.8.1.24">InstType</a>. inst_type_idx should be between 0 and 31. The Error Flag is <b>not</b> set if an out of range <a href="Chapter4.html#4.8.1.24">InstType</a> was used.</p>
2596c2596
< <p>Get the current InstType and stores it in user_var. If the first install type is selected, 0 will be put in user_var. If the second install type is selected, 1 will be put in user_var, and so on. The value of ${NSIS_MAX_INST_TYPES} (32 by default) means that the custom install type was selected.</p>
---
> <p>Get the current <a href="Chapter4.html#4.8.1.24">InstType</a> and stores it in user_var. If the first install type is selected, 0 will be put in user_var. If the second install type is selected, 1 will be put in user_var, and so on. The value of ${NSIS_MAX_INST_TYPES} (32 by default) means that the custom install type was selected.</p>
2601c2601
< <p>Sets the Text of the specified InstType. If the Text is empty than the InstType is removed. By using a previously unused inst_type_idx number you can create new InstTypes. To add/remove Sections to this new InstType see <a href="Chapter4.html#4.9.13.5">SectionSetInstTypes</a>. Unlike <a href="Chapter4.html#4.6.1.4">SectionIn</a> the index is zero based, which means the first install type's index is 0.</p>
---
> <p>Sets the Text of the specified <a href="Chapter4.html#4.8.1.24">InstType</a>. If the Text is empty than the <a href="Chapter4.html#4.8.1.24">InstType</a> is removed. By using a previously unused inst_type_idx number you can create new <a href="Chapter4.html#4.8.1.24">InstType</a>. To add/remove Sections to this new  <a href="Chapter4.html#4.8.1.24">InstType</a> see <a href="Chapter4.html#4.9.13.5">SectionSetInstTypes</a>. Unlike <a href="Chapter4.html#4.6.1.4">SectionIn</a> the index is zero based, which means the first install type's index is 0.</p>
2616c2616
< <p>Gets the Text of the specified InstType.</p>
---
> <p>Gets the Text of the specified <a href="Chapter4.html#4.8.1.24">InstType</a>.</p>
2666c2666
< <p>Searches for a window. Behaves like the win32 FindWindowEx(). Searches by windowclass (and/or windowtitle if specified). If windowparent or childafter are specified, the search will be restricted as such. If windowclass or windowtitle is specified as &quot;&quot;, they will not be used for the search. If the window is not found, the user variable returned is 0. To accomplish old-style FindWindow behavior, use FindWindow with SendMessage.</p>
---
> <p>Searches for a window. Behaves like the win32 FindWindowEx(). Searches by windowclass (and/or windowtitle if specified). If windowparent or childafter are specified, the search will be restricted as such. If windowclass or windowtitle is specified as &quot;&quot;, they will not be used for the search. If the window is not found, the user variable returned is 0. To accomplish old-style <a href="Chapter4.html#4.9.14.5">FindWindow</a> behavior, use <a href="Chapter4.html#4.9.14.5">FindWindow</a> with <a href="Chapter4.html#4.9.14.10">SendMessage</a>.</p>
2674c2674
< <p>Retrieves the handle of a control identified by item_id in the specified dialog box dialog. If you want to get the handle of a control on the inner dialog, first use FindWindow user_var(output) &quot;#32770&quot; &quot;&quot; $HWNDPARENT to get the handle of the inner dialog.</p>
---
> <p>Retrieves the handle of a control identified by item_id in the specified dialog box dialog. If you want to get the handle of a control on the inner dialog, first use <a href="Chapter4.html#4.9.14.5">FindWindow</a> user_var(output) &quot;#32770&quot; &quot;&quot; $HWNDPARENT to get the handle of the inner dialog.</p>
2722c2722
< <p>Sets the current bitmap file displayed as the branding image. If no IMGID is specified, the first image control found will be used, or the image control created by <a href="Chapter4.html#4.8.1.1">AddBrandingImage</a>. Note that this bitmap must be present on the user's machine. Use File first to put it there. If /RESIZETOFIT is specified the image will be automatically resized (very poorly) to the image control size. If you used <a href="Chapter4.html#4.8.1.1">AddBrandingImage</a> you can get this size, by compiling your script and watching for <a href="Chapter4.html#4.8.1.1">AddBrandingImage</a> output, it will tell you the size. SetBrandingImage will not work when called from .onInit!</p>
---
> <p>Sets the current bitmap file displayed as the branding image. If no IMGID is specified, the first image control found will be used, or the image control created by <a href="Chapter4.html#4.8.1.1">AddBrandingImage</a>. Note that this bitmap must be present on the user's machine. Use <a href="Chapter4.html#4.9.1.5">File</a> first to put it there. If /RESIZETOFIT is specified the image will be automatically resized (very poorly) to the image control size. If you used <a href="Chapter4.html#4.8.1.1">AddBrandingImage</a> you can get this size, by compiling your script and watching for <a href="Chapter4.html#4.8.1.1">AddBrandingImage</a> output, it will tell you the size. SetBrandingImage will not work when called from .onInit!</p>
2795c2795
< <p>Does the same as <a href="Chapter4.html#4.9.15.2">LangString</a> only it loads the string from a text/RTF file and defines a special LangString that can be used only by <a href="Chapter4.html#4.8.1.26">LicenseData</a>.</p>
---
> <p>Does the same as <a href="Chapter4.html#4.9.15.2">LangString</a> only it loads the string from a text/RTF file and defines a special <a href="Chapter4.html#4.9.15.2">LangString</a> that can be used only by <a href="Chapter4.html#4.8.1.26">LicenseData</a>.</p>
