StateDMI / Development Environment / NSIS
Nullsoft Scriptable Install System (NSIS) software is used to create the Windows installer for StateDMI.
NSIS Installation
Install version 3.03 of the software for the development version operating system from the download page on the following page.
NSIS provides the benefit of being scriptable and therefore fits with automating creation of the installer.
Running the installer advises to uninstall the earlier version of NSIS (2.46 was used for older versions of StateDMI). Therefore, uninstall the older version.
Install NSIS 3.03 using the installer defaults.
NSIS Add-ons for NSIS 3.03
The core NSIS software does not provide all the necessary functionality. Additional NSIS components were added to the main software location when NSIS was first chosen as a solution.
The files necessary for NSIS add-ons can be found in the repository cdss-util-buildtools
under the directories install/NSIS
.
The files discussed in the following sections should be copied into the
C:\Program Files (x86)\NSIS
necessary for the StateDMI install process.
Files from original sources are used and where notes files are copied from the
NSIS 2.46 archive repository.
To facilitate installation of NSIS 3.03 add-ins, perform the following steps:
- Open a Git Bash shell. Run as Administrator because the installation process
will install files into
C:\Program Files (x86)
. - Change directories to the
cdss-util-buildtools
repositoryinstall/NSIS
folder. - Run the
install-to-nsis-3.03.sh
script. This is an interactive script that will help confirm that NSIS 3.03 is installed and will prompt for confirmation to install.
The files discussed in the following sections were added many years ago and it is not clear what files are still needed in the NSIS program files for the CDSS installers to build properly. The comments section for each file indicates whether or not the StateDMI installer is functional with or without the file present in the NSIS program files.
Files listed in table in bold are necessary and result in build errors if not included. Files not bolded may be phased out over time, but are being kept as to not cause any potential issues if they are actually needed, but this was not apparent in testing.
The following sections are helpful mainly to indicate the source of files
that are now saved in the cdss-util-buildtools
repository install/NSIS
folder.
If the install process is not changed much,
then the add-in installation process described above should result in a workable
development environment.
Contrib/
Folder:
Component for Plugin | Description | Where to Download | Comments |
---|---|---|---|
Graphics/UltraModernUI/ |
Image files (.bmp ) for modern installer look. |
UltraModernUI 2.0 beta 4 on GitHub | Part of the UltraModernUI 2.0 beta 4 plug-in. Causes no errors if not included in NSIS when building StateDMI installer. The current installer doesn't utilize any of these Graphics, but without the folder you cannot use them in the future with NSIS. |
InstallOptionsEx/ |
This plugin is an extension for the original InstallOptions plug-in distributed with NSIS, for those who want to have a more professional looking NSIS page. | UltraModernUI 2.0 beta 4 on GitHub or InstallOptionsEX 2.4.5 plug-in | Part of the InstallOptionsEx plug-in, but included in UltraModernUI plugin as well. Causes no errors if not included in NSIS when building StateDMI installation. May offer beneficial features for the future, however. |
nsArray/ |
A much simpler and smaller DLL than NSISArray. Provides less out-of-the-box functionality but is faster and uses less memory. Supports any number of named dynamic arrays, indexed or hashed arrays, value getting, setting, insertion, removal, copying, joining and sorting (via quick sort algo.) | UltraModernUI 2.0 beta 4 on GitHub or nsArray | Part of the nsArray plug-in, but included in UltraModernUI. Before NSIS was using NSISArray which is deprecated and has been replaced with nsArray. Causes no errors if not included in NSIS when building StateDMI installation. |
SetCursor/ |
An NSIS plugin to set the cursor or change its position. | SetCursor | SetCursor is it's own plug-in, separate from UltraModernUI. Causes no errors if not included in NSIS when building StateDMI installation. |
SkinnedControls/ |
This NSIS plug-in allows using a "skin" for buttons and scroll bars of the installer and allows selecting text colors on buttons, even those on custom pages. Causes no errors if not included in NSIS when building StateDMI installation. | UltraModernUI 2.0 beta 4 on GitHub or SkinnedControls 1.4 | Part of the SkinnedControls plug-in, but included in UltraModernUI. |
UIs/UltraModernUI/ UIs/default_sb.exe UIs/modern_sb.exe |
UI's for UltraModernUI | UltraModernUI 2.0 beta 4 on GitHub | Part of the UltraModernUI plug-in. If not included in NSIS there will be errors with building the StateDMI Installer. |
UltraModernUI/ |
The main UltraModernUI | UltraModernUI 2.0 beta 4 on GitHub | This is the main component for UltraModernUI and is absolutely necessary for using the UltraModernUI plug-in. If not included in NSIS there will be errors with building the StateDMI installer. |
Necessary files for Contrib/
Folder:
These are the essential files that must be included in the NSIS 3.03 Contrib/
folder
to ensure that the StateDMI installer will build properly with no errors.
Contrib/UIs/UltraModernUI
Contrib/UIs/default_sb.exe
Contrib/UIs/modern_sb.exe
Contrib/UltraModernUI
Include/
Folder:
Component for Plugin | Description | Where to Download | Comments |
---|---|---|---|
MUIEx.nsh |
Includes Contrib/UltraModernUI/UMUI.nsh in NSIS build. |
UltraModernUI 2.0 beta 4 on GitHub | Causes no errors if not included in NSIS when building StateDMI installation. |
nsArray.nsh |
Includes necessary information for Contrib/nsArray/ |
UltraModernUI 2.0 beta 4 on GitHub or nsArray | Causes no errors if not included in NSIS when building StateDMI installer. |
Registry.nsh |
Includes necessary information for Plugins/Registry.dll |
Registry 4.1 | If not included in NSIS there will be errors with building the StateDMI installer. |
TextReplace.nsh |
Includes necessary information for Contrib/TextReplace.dll |
TextReplace 1.5 | If not included in NSIS there will be errors with building the StateDMI installer. |
UMUI.nsh |
Appears to also include Contrib/UltraModernUI/UMUI.nsh . Not sure the difference between this file and MUIEx.nsh |
UltraModernUI 2.0 beta 4 on GitHub | If not included in NSIS there will be errors with building the StateDMI installer. |
Necessary files for Include/
Folder:
These are the essential files that must be included in the NISI program Include/
folder to ensure that StateDMI installer will build properly with no errors.
Include/Registry.nsh
Include/TextReplace.nsh
Include/UMUI.nsh
Plugins/
Folder:
NSIS 2.46 strictly used x86-ansi
for .dll
files. NSIS 3.03 has updated to
include both x86-ansi
and x86-unicode
for .dll
files. If adding a plug-in
that only includes one .dll
file, it is safe to assume this will be x86-ansi
.
Component for Plugin | Description | Where to Download | Comments |
---|---|---|---|
InstallOptionsEx.dll |
Dynamic link library for InstallOptionsEx plug-in. This plugin is an extension for the original InstallOptions plug-in distributed with NSIS, for those who want to have a more professional looking NSIS page. | UltraModernUI 2.0 beta 4 on GitHub or InstallOptionsEX 2.4.5 plug-in | Causes no errors if not included in NSIS when building StateDMI. |
nsArray.dll |
Dynamic link library for nsArray plug-in. Before NSIS was using NSISArray which is deprecated and has been replaced with nsArray. Causes no errors if not included in NSIS when building StateDMI installation. | UltraModernUI 2.0 beta 4 on GitHub or nsArray | Causes no errors if not included in NSIS when building StateDMI installer. |
Registry.dll |
Dynamic link library for Registry plug-in. This is NSIS plug-in for registry. Archive also contains PPC-Registry plugin for Pocket PC. | Registry 4.1 | Causes no errors if not included in NSIS when building StateDMI installer. |
SetCursor.dll |
Dynamic link library for SetCursor plug-in. An NSIS plugin to set the cursor or change its position. | SetCursor | If not included in NSIS there will be errors with building the StateDMI installer. |
SkinnedControls.dll |
Dynamic link library for SkinnedControl plug-in. This NSIS plug-in allows using a "skin" for buttons and scroll bars of the installer and allows selecting text colors on buttons, even those on custom pages. Causes no errors if not included in NSIS when building StateDMI installation. | UltraModernUI 2.0 beta 4 on GitHub or SkinnedControls 1.4 | If not included in NSIS there will be errors when building the StateDMI installer. |
TextReplace.dll |
Dynamic link library for TextReplace plug-in. | TextReplace 1.5 | If not included in NSIS there will be errors when building the StateDMI installer. |
Necessary file for Plugins/
Folder:
Plugins/SetCursor.dll
Plugins/SkinnedControls.dll
Plugins/TextReplace.dll
NSIS Add-ons for NSIS 2.46
See the similar section in TSTool developer documentation.