Вы находитесь на странице: 1из 2

As the name suggests, NSIS uses scripts which are ultimately compiled into a final

executable. As with all things code-wise, there’s a specific format NSIS requires,
and the easiest way to learn this structure is to build a sample install file – so
let’s get to it!

First, grab NSIS from nsis.sourceforge.net and install it. While you can do
everything from a text editor of your choice, if you want to make life easy as
well as have the benefit of context sensitive highlighting, grab HM NIS EDIT from
hmne.sourceforge.net – we’ll be using it for this tutorial.

First we need to prepare our files we want to install. Create a folder, and copy
in the files you wish to be installed. These will eventually be called into the
script for compression into a single executable. For the sake of this article,
let’s assume they’re called ‘Morris.txt’, ‘MrsMorris.jpg’ and ‘MorrisJnr.hint’.
Open up HM NIS Edit. Go to File --> New Script From Wizard, and enter the
appropriate details. This will set up the header of the installation script for
you. We’ve named ours Atomic Installer, but you’re welcome to use anything you
like. Choose the modern GUI, and alter any other settings you desire.

Next we get to choose the installation directory, by default $PROGRAMFILES\Name of


Program. $PROGRAMFILES is for all intents and purposes a symbolic link or variable
– wherever this symbol appears, the installer queries the operating system as to
where the program files directory exists, and then adjusts its output
appropriately. Not only does this mean portability across configurations, but more
often than not it means less typing! Always a bonus. Whatever you enter here will
then be stored as the symbol $INSTDIR. Several other symbols also exist that can
be used throughout your code – see the sidebox on the next page for the most
commonly used ones.

On the same dialog, you can include a license if you want, to be displayed inside
the installer – simply leave the field blank if you wish to skip it.

Click Next and hit the Add File button (the second white page icon), and add all
of the files we moved into our folder earlier. Check ‘Allow user to select the
components to install’.

Now we need to set up any Start Menu icons that we wish to install. Creating an
internet shortcut will do as it says, using the website details you entered on the
first page, and is selected by default. Click the New Shortcut button. Use the
lower drop down box to select the file you wish to appear in the Start Menu, then
select $SMPROGRAMS from the top drop down menu. You’ll want to alter the string to
include your program folder – so for our install, if we wanted to create a
shortcut to ‘MorrisJnr.hint’ in the Start Menu with a more descriptive name, we’d
enter something like $SMPROGRAMS\Atomic Install\MorrisJnr I Am Your Father.lnk.
You can also set up any desktop icons in the same manner by using the $DESKTOP
symbol instead. Skip the next step for now, hit Next at the window after that and
then hit Finish.

Script Revision
Holy crap on toast! That’s a lot of code. Let’s take a look at the different
sections that have been generated. The first section is simply the information we
entered on the first page of the wizard, with additional uninstall data being
written to the registry.

Next we’re including the libraries required to use the Modern UI (MUI.nsh). !
define MUI_ABORTWARNING tells the installer to display an ‘Are you sure?’ style
message when the users tries to cancel. Following this are our install icons and
uninstall icons – in the modern UI, the install icon will appear as the icon for
the program, in the title bar of the program and as an image in the top right. Be
aware that your install and uninstall icons must contain the same number of icons,
in the same size and colour depth order. If this makes no sense to you, that’s
okay, just play it safe and use the default icon set or any of the matching sets
provided in the ‘\Contrib\Graphics\Icons\’ subfolder off your NSIS directory.

Following this we have what pages will appear in the installer, and in what order.
By default there’s Welcome screen, followed by a screen allowing the user to
install the components they wish, then a screen allowing the choice of install
directory. MUI_PAGE_INSTFILES is the install progress page, then we have the
finish page, the uninstaller page and the language file.

The !define key that you see littered all about the place is essentially creating
a symbol – if you use the symbol ${PRODUCT_NAME} after using !define PRODUCT_NAME,
it will link back to the PRODUCT_NAME argument you entered at the top of the
script, in this case ‘Atomic Install’. As you can see, this methodology is used
for the Name variable, which is next in the script. This is what the installer
will call your program throughout the process, and include in the title bar.

OutFile is the name of the executable that will be produced upon compilation (and
will be generated in the same directory that your .NSI file is in), and InstallDir
is where the files will be installed by default. If you comment out the
MUI_PAGE_DIRECTORY macro earlier with a semicolon, the files will be force
installed to the default directory.

Next up is ShowInstDetails and ShowUnInstDetails, which have the arguments Show,


Hide, and NeverShow. Show displays the details as the program installs, Hide
displays a progress bar with a button to ‘Show Details’ if the user desires, and
NeverShow displays only a progress bar with no option to view the install process.
Note that you can get all the valid arguments for an instruction at any time by
hovering the mouse over it in HM NIS Edit.

Вам также может понравиться