You are here

A basic NSIS tutorial...

Submitted by nm35 on April 5, 2006 - 8:54pm

Want to learn a bit of NSIS, so you can write your own installer -- or, even better -- your own portable app? I can't provide a full-fledged tutorial -- for that you'd have to hunt around the NSIS website -- but I can provide this useful template and a few basic NSIS commands you'll find useful. Enjoy!

Use this template and replace the bolded text, and you'll have a basic NSIS script (which doesn't do anything). Click here to see some basic commands.

NSIS Template.nsi (replace bolded text)

;Long Application Name

;Copyright (C) 
;2006 Your Name

;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either version 2
;of the License, or (at your option) any later version.

;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;GNU General Public License for more details.

;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA02110-1301, USA.


!define SNAME "ShortAppName"

;-----Runtime switches----
CRCCheck on
AutoCloseWindow True
SilentInstall silent
WindowIcon off

;-----Set basic information-----

Name "Long Application Name"
Icon "${SNAME}.ico "
Caption "Long Application Name"
OutFile "${SNAME}.exe"


Var VariableName

;-----Version Information------

LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"

VIProductVersion "Version number in format x.x.x.x"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "Long Application Name"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© Your Name 2006"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Application Description"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "Version number"

Section "Main"

Code goes here...


Here are a few commands and variables, just to get you started. Remember -- a huge list is available in the help system!

NOTE: $EXEDIR is the directory the app is in, and $OUTDIR is the directory any files are extracted to.

Put the value value into the variable $variable:

StrCpy $variable "value"

Use this to set $OUTDIR, if you want to extract files.

Run cool.exe in the directory the app is in, and follow the next command:

Exec "$EXEDIR\cool.exe"

Run cool.exe in the directory the app is in, and wait for that app to terminate, then follow the next command:

ExecWait "$EXEDIR\cool.exe"

Set $OUTDIR to C:\App and then extract toodles.exe

StrCpy $OUTDIR "C:\App"
File $EXEDIR\Toodles.exe

This alone should be enough to get you started -- now go learn some more!


If people are going to post code this often then John really needs to enable the <pre> tag. &ltcode> is not for multiple lines of code and shouldn't be styled in a block like it is on this site.

I did mention this before... hopefully John will see this.

John T. Haller's picture

You're quite right, Thox. I missed it the last time you mentioned it.

I've enabled pre and set code back to display: inline. I edited nm35's NSIS post so it uses pre. If I see others using the old code display method, I'll fix em.

Sometimes, the impossible can become possible, if you're awesome!