NSIS Dialog Designer

Screenshot 1

NSIS Dialog Designer is an IDE that provides a graphical tool to easily design your custom setup pages for the great NSIS installer system.

It supports MUI2 (Modern User Interface 2) dialogs and generates NSIS files ready to be included into your own *.nsi install script.

NSIS Dialog Designer is still a work-in-progress and so is this page.
Please test it and give me your feedback to let this tool suit your needs.

NSIS Dialog Designer is freeware and can be used to design both free and commercial setups.

How does it work

NDD is a relatively simple IDE; if you're used to Visual Studio™ or Eclipse you'll feel at home.
Start by creating a new dialog (File | New), then add some controls to it by choosing them from the Toolbox.
Each control has properties and you can easily edit them into the property grid.

When you save the dialog (suppose you called it Form1), NDD will create 2 separate files:

  • Form1.nsddef is the definition of your dialog in XML format; it contains all controls definitions and their properties
  • Form1.nsdinc is an NSIS script containing all the NSIS commands needed to render your dialog; this is the file you'll include into your own NSIS setup script.

Supported controls

NSIS Dialog Designer supports the following controls



For each control you can set name, position and size. Controls also have events you can bind to your own script functions.

You can also provide your own script parts and fully customize the generated script.

Sample script

Following is the .nsddef definition file for a form with a single button:

<?xml version="1.0" encoding="Unicode"?>
<Dialog Title="Dialog title..." Subtitle="Dialog subtitle...">
  <Button Location="12, 12" Size="95, 33" Text="Button1" />

NSIS Dialog Designer will generate this .nsdinc NSIS script file for the dialog:

; handle variables
Var hCtl_Form1
Var hCtl_Form1_Button1
; dialog create function
Function fnc_Form1_Create
  ; === Form1 (type: Dialog) ===
  nsDialogs::Create 1018
  Pop $hCtl_Form1
  ${If} $hCtl_Form1 == error
  !insertmacro MUI_HEADER_TEXT "Dialog title..." "Dialog subtitle..."
  ; === Button1 (type: Button) ===
  ${NSD_CreateButton} 12 12 95 33 "Button1"
  Pop $hCtl_Form1_Button1
; dialog show function
Function fnc_Form1_Show
  Call fnc_Form1_Create
  nsDialogs::Show $hCtl_Form1

So into your own NSIS script you only need to include the generated .nsdinc file and call the *Show function.

; The name of the installer
Name "NSISDialogDesigner-Test"
; installer properties
XPStyle on
; The file to write
OutFile "test.exe"
; MUI Symbol Definitions
!include Sections.nsh
!include MUI2.nsh
!insertmacro MUI_LANGUAGE English
!include "Form1.nsdinc"
!insertmacro MUI_PAGE_WELCOME
Page custom fnc_Form1_Show
!insertmacro MUI_PAGE_FINISH

That's all, I'll wait for your feedback...

Version history 

v.1.4.1 - 2015-09-07

  • FIX: Fixed small memory leak in generated NSIS script (dialog handle left on the stack when calling nsDialogs::Show).

v.1.4.0 - 2015-03-17

  • NEW: Dialog has a new property "DialogUI" which allows user to set custom DialogID and Size (i.e.: using a different UI like sdbarker_tiny.exe).
  • FIX: HLine and VLine controls don't pop their handle from stack.

v.1.3.3 - 2015-03-09

  • FIX: Readonly and TextLimit properties of Number control do not work.

v.1.3.2 - 2014-11-10

  • FIX: Fixed DialogID and Size management, form Size is now readonly unless DialogID is set to a custom value.

v.1.3.1 - 2014-10-27

  • FIX: Can't set custom dialog size, it always revert back to default.
  • FIX: Style and ExStyle dialog properties were serialized even of not necessary.
  • FIX: Removed useless Visible and Enabled dialog properties.

v.1.3.0 - 2014-08-12

  • NEW: TabIndex property of each control is now synchronized with control order into its parent child controls collection. Changing TabIndex (directly or through the "Set TabOrder..." menu command will also change the scripting order of the control into the generated NSIS script.
  • NEW: A warning is now emitted into .nsdinc file to warn the user about manually editing the file.
  • FIX: When dragging a control over another, the dragged control disappeared making it difficult to place two overlapping controls (think about a background bitmap).
  • FIX: Show a custom error message when setting Dialog BackColor property to Transparent.
  • FIX: Fixed properties exposed by HLine and VLine special controls.
  • FIX: Generated script for DirRequest/FileRequest controls is missing some properties (Enabled, Visible, onChange, onClick, Style, ExStyle, ControlCustomScript).

v.1.2.0 - 2014-07-11

  • NEW: CoordinateSystem conversions are now done with higher precision.
    (thanks to shadowpoa for feedback: http://forums.winamp.com/showpost.php?p=3001224)
  • NEW: Control sizes are now written with up to 2 decimals in NSIS generated script.
  • NEW: Added a new "All" subproperty to controls CoordinateSystem property; it can be used to change X,Y,Width,Height subproperties all together.
  • FIX: Wrong vertical CoordinateSystem conversion "Pixel --> DialogUnits".

v.1.1.3 - 2013-12-16

  • FIX: Fixed generated script for DirRequest and FileRequest controls, not respecting CoordinateSystem.

v.1.1.2 - 2013-01-11

v.1.1.1 - 2012-10-01

  • FIX: Fixed generated script for FileRequest control (wrong test on returned string).

v.1.1.0 - 2012-09-14

  • NEW: Improved support for DialogIDs other than the default one (1018). User can now select 1044 (Welcome & Finish pages) and designer will change dialog size accordingly.
  • NEW: Added RichText control support. It does not support RTF text loading, it must be customized by the user (see here: http://forums.winamp.com/showthread.php?t=288129).

v.1.0.0 - 2012-08-25
After a long time from latest one, it's now time to release the first stable version.

  • FIX: Text property of Number control now accepts numeric values and variable nalems (like $abc).
  • FIX: Minor cosmetic fixes.

v.0.9.16 - 2012-04-20

  • FIX: SelectedItem property of ListBox, ComboBox and DropList controls now accepts any value (like $abc).

v.0.9.15 - 2012-04-13

  • FIX: NullReference exception thrown when adding an HLine or VLine control.

v.0.9.14 - 2012-03-20

  • NEW: Panel control, which is only a container for other controls (useful to create more than one RadioButtons group). It has no corresponding NSIS control, so no NSIS script if generated for it.
  • NEW: Added property "Checked" to RadioButton control. Only one RadioButton can be selected at once; if you need to create two (or more) different groups, you must include RadioButtons into a GroupBox or Panel control.

v.0.9.13 - 2012-03-09

  • FIX: Wrong code generated for MaxLength property of TextBox control (thanks to fabpolli for bug report).

v.0.9.12 - 2012-02-27

  • NEW: Added "Percentage" to the available NSIS coordinate systems.
  • NEW: Selection of NSIS coordinate system is now possible at control level, and for each component (X, Y, Width, Height). So now is possible to have different coordinate systems for different controls.
  • Controls coordinate system default value is "Inherit"; this means that by default each control is rendered using the same coordinate system as the containing dialog.

v.0.9.11 - 2012-02-11

  • NEW: NSIS scripts (*.nsdinc files) controls position and size values can now be selected between DU (Dialog units, the new default mode) and Pixels. The default coordinate system mode can be set into Options dialog.
  • NEW: Added 2 new controls: DirRequest and FileRequest.

v.0.9.10 - 2011-11-23

  • FIX: Fixed bug that prevents opening forms where SetupType property is different from default value (Install).
  • FIX: IDE layout was not saved correctly and lost between version upgrades. Please reset layout (View | Reset layout), customize it then restart IDE to save correctly.

v.0.9.9 - 2011-11-21

  • NEW: Added new "check updates" features: it periodically checks for new releases on CoolSoft website.
  • NEW: Script preview editor now preserves selection and cursor position after script changes and when switching between multiple opened dialogs.
  • NEW: TabIndex property can now be used to customize focus path through controls.
  • NEW: Added context menu to dialog designer, it shows Edit menu items.
  • NEW: Dialog .nsddef files are now created with UTF-8 encoding.
  • NEW: .nsddef and .nsdinc files now include NSISDialogDesigner version into header comments.
  • NEW: Duplicate font definitions are merged, generating only a single variable.
  • NEW: .nsddef files can now be opened by drag&drop from Windows Explorer.
  • NEW: IDE layout can now be reset through View menu item "Reset layout".
  • FIX: Property are now stored into .nsddef only if value is different from default.
  • FIX: Fixed issue on copy/paste controls (duplicate control name).
  • FIX: User custom scripts won't be generated during debug, avoiding compile error due to missing functions.

v.0.9.8 - 2011-09-12

v.0.9.7 - 2011-09-11

  • NEW: Added support for Unicode into generated .nsdinc scripts (needs an Unicode version of NSIS).
  • NEW: New (self explaining) control properties: Visible and Enabled.
  • NEW: Dialog name (and so the corresponding NSIS variable) can now be set independently from its .nsddef filename. It could be set through the new "Name" dialog property.
  • FIX: Generated test script (the one compiled with F5) now checks user custom scripts to avoid redefining an already defined function. (thanks to Benjamin Richardson for reporting bug)
  • FIX: Fixed broken uninstall test script.
  • FIX: Some properties appear in bold into Property Grid, even if their value is the default one. This caused the generate script to be longer than required.
  • FIX: Custom script editor now accepts TAB key.
  • FIX: Script preview is cleared when closing the last dialog editor.
  • FIX: Fixed focus management issues that prevents DEL key to work into PropertyGrid.

v.0.9.6 - 2011-06-28

  • NEW: Added new property SetupType to dialog, allowing the generated script to be used in Install and Uninstall scripts.
  • NEW: Debugger code to debug Uninstaller dialogs.
  • FIX: Cleaned up the debug scripts.

v.0.9.5 - 2011-06-16

  • BUG: Fixed key management preventing DEL key to be used inside PropertyGrid (thanks to Jovet for bug report)
  • NEW: Edit menu items now are enabled according to active content (designer, property, toolbox, ...)
  • NEW: DialogID and Size now are public properties (deedsmedia request)
    (can be reset to default values by right-clicking on PropertyGrid item)

v.0.9.4 - 2011-05-29

  • BUG: Fixed permission issues on UAC enabled systems.

v.0.9.3 - 2011-04-20

  • NEW: Added new properties ForeColor and BackColor
    (not working for: Button, ComboBox, DropList, GroupBox, HLine, VLine, ProgressBar)
  • NEW: Added new property Font
  • NEW: Designer now can show a grid (see Tools | Options menu)
  • BUG: Editor does not save dialogs when exiting with close button.
  • BUG: Script preview not updated when a new control is added

v.0.9.2 - 2011-04-20

  • BUG: Missing property "Name" is now shown (Dialog does not have it because name is the same as its definition filename)

v.0.9.1 - 2011-04-20

  • NEW: New dockable content with realtime NSIS generated script preview

v.0.9.0 - 2011-04-18

  • First public release


NOTE: .NET Framework 2.0 or newer is required: 2.0 (x86) - 2.0 (x64) - 4.0 (client profile)
(Windows Vista comes with .NET Framework 3.0 preinstalled, Windows 7 comes with .NET Framework 3.5 preinstalled, Windows 8 comes with .NET Framework 4 preinstalled)

Description Stable version
Release date 2015-Sep-07 Size 480,942 bytes
MD5 68e98b39a40f9dd9b5df97d590b8fad5
SHA1 478e75c5ec2e6e244eff19485c6a2a55fdadeb26
SHA256 9b6d4afb3f3f9eaa9c24386b17f25d4e5e65767a902737799de02d250f08327c
Virus check Open virus check report
Description Previous version
Release date 2015-Mar-17 Size 468,759 bytes
MD5 5e357e57bf2806cb46175a9ff9ad9e6f
SHA1 4b4a12a4e1af493b6303e322b7de6e407e8f716c
SHA256 0d63131740f7e9fc38513fb8f364b034d98a9e65812d8243921286958ede2af4
Virus check Open virus check report
Release date 2015-Mar-10 Size 467,915 bytes
MD5 f70e185278da57d1aaa1d3d0493cab2c
SHA1 db77b0732f76b0065a8e0aaefbea680f6c03ef26
SHA256 5a25d127cdec183539041147d2db4ead4a723a81762d76ae466748790c78c05d
Virus check Open virus check report


Comments are now disabled and old comments were converted to forum posts.

Please use the new CoolSoft forum to post your messages.


Warning, JavaScript is disabled!

JavaScript is not available, maybe because you disabled it globally into your browser settings or you are using an addon like NoScript.

We do not have any dangerous JavaScript running here.
Please enable JavaScript; if you're using NoScript this image will help you adding CoolSoft to your whitelist.

Thanks for your comprehension and enjoy CoolSoft.