To use the DLL, you should include it as part of your installation. Extract it to known location (probably $TEMP), and then load it using CallInstDLL, passing one parameter on the stack. The one parameter is a name of an .ini file that defines the window. Example:
SetOutPath $TEMP File inst.ini File InstallOptions.dll Push $TEMP\inst.ini CallInstDLL $TEMP\InstallOptions.dll dialog Pop $0 ; ($0 would be "success" "cancel" "back" or some other value on error. ReadINIStr $1 $TEMP\inst.ini "Field 1" State ; $1 = field #1's state Delete $TEMP\inst.nsi Delete $TEMP\InstallOptions.dllIt is often very useful to call InstallOptions from the NSIS callback functions .onNextPage and .onPrevPage.
The INI file has one required section. This section includes the number of controls to be created as well as general window attributes. The INI file also includes a variable number of Field sections which are used to create the controls to be displayed.
The required section is named "Settings". It will contain the following values:
NumFields | (required) | The number of control elements to be displayed on the dialog window. |
Title | (optional) | If specified, gives the text to set the titlebar to. Otherwise, the titlebar text is not changed. |
CancelConfirm | (optional) | If specified, prompts the user (With text) whether or not to cancel if they select the cancel button. |
CancelConfirmCaption | (optional) | If specified, replaces the default "Question" caption by a user specified value. |
CancelConfirmFlags | (optional) | If specified, can add an icon to the cancel confirmation message box (MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP) or effect the behaviour of it in other ways (MB_TOPMOST, MB_SETFOREGROUND, MB_RIGHT, MB_DEFBUTTON1, MB_DEFBUTTON2). To specify multiple flags, separate using the pipe '|' symbol. |
CancelEnabled | (optional) | Controls whether or not the cancel button in the NSIS window is enabled. If set to 1 or omitted, the cancel button will be enabled. If set to 0, the cancel button will be disabled. |
CancelShow | (optional) | Controls whether or not the cancel button in the NSIS window is shown. If set to 1 or omitted, the cancel button will be shown. If set to 0, the cancel button will be hidden. |
BackDisabled | (optional) | Controls whether or not the back button in the NSIS window is disabled. If set to 0 or omitted, the back button will be enabled. If set to 1, the back button will be disabled. |
CancelButtonText | (optional) | Overrides the text for the cancel button. If not specified, the cancel button text will not be changed. Recommended value: "Cancel" |
NextButtonText | (optional) | Overrides the text for the next button. If not specified, the next button text will not be changed. Recommended value: "Next >" |
BackButtonText | (optional) | Overrides the text for the back button. If not specified, the back button text will not be changed. Recommended value: "< Back" |
Each field section has the heading "Field #" where # must be sequential numbers from 1 to NumFields. Each Field section contains the following values:
Type | (required) | Type of control to be created. Valid
values are "Label", "Text", "Password",
"Combobox", "DropList", "Listbox", "CheckBox",
"RadioButton",
"FileRequest", or "DirRequest". A "label" is used to display static text. (i.e. a caption for a textbox) A "textbox" and "password" accept text input from the user. "password" masks the input with * characters. A "combobox" allows the user to type text not in the popup list, a "droplist" only allows selection of items in the list. A "listbox" shows multiple items and can optionally allow the user to select more than one item. A "CheckBox" control displays a check box with label. A "RadioButton" control displays a radio button with label. A "FileRequest" control displays a textbox and a browse button. Clicking the browse button will display a file requester where the user can browse for a file. A "DirRequest" control displays a textbox and a browse button. Clicking the browse button will display a directory requester where the user can browse for a directory. "Icon" control displays an icon. Use no Text to use the installer icon. "Bitmap" control displays a bitmap. | ||||||||||||||||||||
Text | (optional) | Specifies the caption of a label, checkbox, or radio button control. For icon and bitmaps control this specifies the path to the image. | ||||||||||||||||||||
State | (optional) | Specifies the state of the control. This is updated when the user closes the window, so you can read from it from NSIS. For edit texts and dir and file request boxes, this is the string that is specified. For radio button and check boxes, this can be '0' or '1' (for unchecked or checked). | ||||||||||||||||||||
ListItems | (optional) | A list of items to display in a combobox,
droplist, or listbox. This is a single line of text with each item separated by a pipe character '|' | ||||||||||||||||||||
MaxLen | (optional) | Causes validation on the selected control
to limit the maximum length of text. If the user specifies more text than this, a message box will appear when they click "OK" and the dialog will not be dismissed. You should not use this on a "combobox" since the user can not control what is selected. This should be set to a maximum of 260 for "FileRequest" and "DirRequest" controls. Ignored on "label" controls. | ||||||||||||||||||||
MinLen | (optional) | Causes validation on the selected control
to force the user to enter a minimum amount of text. If the user specifies less text than this, a message box will appear when they click "OK" and the dialog will not be dismissed. Unlike MaxLen, this is useful for "Combobox" controls. By setting this to a value of "1" the program will force the user to select an item. Ignored on "label" controls. | ||||||||||||||||||||
ValidateText | (optional) | If a particular field fails the test for
"MinLen" or "MaxLen", a messagebox will be displayed with
this text. NOTE: The only formatting performed on this text is "\n" will be replaced with a newline in the messagebox. | ||||||||||||||||||||
Left Right Top Bottom |
(required) | The position on the dialog where this
control appears. Sorry, no GUI here to help you. NOTE: For combobox or droplist, the "bottom" value is not used in the same way. In this case, the bottom value is the maximum size of the window when the pop-up list is being displayed. All other times, the combobox is automatically szed to be one element tall. If you have trouble where you can not see the combobox drop-down, then check the bottom value and ensure it is large enough. NOTE (2): FileRequest and DirRequest controls will allocate 20 pixels to the browse button. Make this control wide enough the contents of the textbox can be seen. Note that you can specify negative coordinates to specify the distance from the right or bottom edge. | ||||||||||||||||||||
Filter | (optional) | Specifies the filter to be used in the
"FileRequest" control. This is constructed by putting pairs of entries together, each item seperated by a | character. The first value in each pair is the text to display for the filter. The second value is the pattern to use to match files. For example, you might specify:
NOTE: you should not put any extra spaces around the | characters. | ||||||||||||||||||||
Root | (optional) | Used by DirRequest controls to specify the root directory of the search. By default, this allows the user to browse any directory on the computer. This will limit the search to a particular directory on the system. | ||||||||||||||||||||
Flags | (optional) | This specifies additional flags for the
display of different controls. Each value should be seperated by a |
character, and you should be careful not to put any spaces around the |
character.
|
Copyright © 2001 Michael Bishop Portions Copyright © 2001 Nullsoft, Inc. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.