Nsis tutorial l.jpg
This presentation is the property of its rightful owner.
Sponsored Links
1 / 95

NSIS - Tutorial PowerPoint PPT Presentation


  • 1601 Views
  • Uploaded on
  • Presentation posted in: General

NSIS - Tutorial. Nullsoft Scriptable Install System. David Schwingenschuh (BSc). "An installer is the first experience of a user with your application. Slow or unsuccessful software installations are the most irritating computer problems.“ [http://nsis.sourceforge.net/home/]. Agenda.

Download Presentation

NSIS - Tutorial

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Nsis tutorial l.jpg

NSIS - Tutorial

Nullsoft Scriptable Install System

David Schwingenschuh (BSc)

"An installer is the first experience of a user with your application. Slow or unsuccessful software installations are the most irritating computer problems.“ [http://nsis.sourceforge.net/home/]


Agenda l.jpg

Agenda

  • Introduction

  • Scripting Structure

    • Installer Attributes

    • Pages

    • Sections

    • Functions

    • Compiler Commands

  • Debugging Scripts


Agenda3 l.jpg

Agenda

  • Development Tools

  • NSIS Framework

  • Installer Example

  • Appendix A: Detailed features


Introduction l.jpg

Introduction

  • NSIS creates installers that are capable of

    • installing,

    • uninstalling,

    • setting system settings,

    • extracting files, etc.

  • you can fully control every part of your installers.

    • based on script files


Introduction5 l.jpg

Introduction

  • The script language supports

    • variables,

    • functions,

    • string manipulation

  • NSIS is still the smallest installer system available.

    • (With the default options, it has an overhead of only 34 KB.)

      A detailed overview about the functions can be found at Appendix A


Introduction6 l.jpg

Introduction

Setting up NSIS Environment

  • Download NSIS from:

    • http://nsis.sourceforge.net/download/

  • Installation of nsis-version.exe

  • NSIS Welcome Screen


Introduction7 l.jpg

Introduction

Setting up NSIS Environment

  • NSIS Quick start Installer

    • Go to the examples folder under the nsis installation directory

    • Choose one .nsi file with a right mouse click and press compile NSIS Script

    • The choosen script will be automatically compiled

    • Press on Test Installer -> Congratulations you have successfully compiled your first NSIS Installer


Introduction8 l.jpg

Introduction

Setting up NSIS Environment

  • The choosen script will be automatically compiled

  • Press on Test Installer -> Congratulations you have successfully compiled your first NSIS Installer


Introduction9 l.jpg

Introduction

Script Files

  • A Script file is the basis for NSIS

    • It is recommended to use editor that shows line numbers

    • Editors which supports syntax highlighting for NSIS scripts can be found at http://nsis.sourceforge.net/wiki/


Introduction10 l.jpg

Introduction

Script Files

  • In a NSIS script every line is treated as a command.

  • If your command is too long for one line

    • you can use a back-slash - '\' - at the end of the line..

      For example:

      Messagebox MB_OK|MB_ICONINFORMATION \

      "This is a sample that shows how to use line breaks for larger commands in NSIS scripts"


Introduction11 l.jpg

Introduction

Script Files

  • If you want to use a double-quote in a string

    • you can either use $\" to escape the quote

    • or quote the string with a different type of quote such as ` or '.


Introduction12 l.jpg

Introduction

Script File Format

  • Commands

    • Commands lines are in the format 'command [parameters]'

      File "myfile"

  • Comments

    • Lines beginning with ; or # are comments.

    • You can put comments after commands.

    • You can also use C-style comments to comment one or more lines


Introduction13 l.jpg

Introduction

Script File Format

  • Example:

    ; Comment

    # Comment

    /*

    Comment

    Comment

    */

    File "myfile" ; Comment

  • If you want a parameter to start with ; or #

    • put it in quotes.


Introduction14 l.jpg

Introduction

Script File Format

  • Numbers

    • For parameters that are treated as numbers, use

      • decimal (the number) or

      • hexadecimal (with 0x prepended to it, i.e. 0x12345AB), or

      • Octal (numbers beginning with a 0 and no x).

        IntCmp 1 0x1 lbl_equal

    • Colors should be set in hexadecimal RGB format,

      • like HTML but without the #.

        SetCtlColors $HWND CCCCCC


Introduction15 l.jpg

Introduction

Script File Format

  • Variables

    • Variables start with $. User variables should be declared.

      Var MYVAR

  • Plug-ins

    • To call a plug-in, use 'plugin::command [parameters]'.

      nsExec::Exec "myfile"


Introduction16 l.jpg

Introduction

Script File Format

  • Strings

    • To represent strings that have spaces, use quotes:

      MessageBox MB_OK "Hi there!"

    • Quotes only have the property of containing a parameter if they begin the parameter.

      • They can be either

        • single quotes,

        • double quotes,

        • or the backward single quote.

    • You can escape quotes using $\:


Introduction17 l.jpg

Introduction

Script File Format

  • Examples:

    MessageBox MB_OK "I'll be happy" ; this one puts a ' inside a string

    MessageBox MB_OK 'And he said to me "Hi there!"' ; this one puts a " inside a string

    MessageBox MB_OK `And he said to me "I'll be happy again!"` ; this one puts both ' and "s inside a string

    MessageBox MB_OK "$\"A quote from a wise man$\" said the wise man" ; this one shows escaping of quotes

  • It is also possible to put newlines, tabs etc. in a string using $\r, $\n, $\t etc.


Introduction18 l.jpg

Introduction

Script File Format

  • Long commands

    • To extend a command over multiple lines,

      • use a backslash (\) at the end of the line.

      • For example:

        CreateShortCut "$SMPROGRAMS\NSIS\ZIP2EXE project workspace.lnk" \

            "$INSTDIR\source\zip2exe\zip2exe.dsw"

        MessageBox MB_YESNO|MB_ICONQUESTION \

            "Do you want to remove all files in the folder? \

            (If you have anything you created that you want \

             to keep, click No)" \

            IDNO NoRemoveLabel


Introduction19 l.jpg

Introduction

Script Files

  • The default extension for a script file is .nsi

  • Header files have the .nsh extension

    • Header files are useful in case of

      • reuseability of the functions

      • to split one huge script file into smaller pieces

    • Headers files can be included by using the follwing command:

      • !include <name>.nsh


Scripting structure l.jpg

Scripting Structure

General Overview

;Defines

!define PRODUCT_NAME "ocs - Outlook Collaboration Sync"

!define PRODUCT_VERSION "1.0"

!define PRODUCT_PUBLISHER "mausz.net“

;Includes

!include "MUI.nsh„

;Pages

!insertmacro MUI_PAGE_DIRECTORY

Page custom DatabaseConfig

;Defintions of Installer Attributes

OutFile "ocsSetup.exe"

InstallDir "$PROGRAMFILES\ocs"

InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""

ShowInstDetails show

;Definition of variables

VAR /global type

VAR /global databaseserver

NSIS Script


Scripting structure21 l.jpg

Scripting Structure

General Overview

;Functions

Function .onInit

!insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS \

"databaseconfig.ini" "DatabaseConfig"

!insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS \

"licenceconfig.ini" "LicenceConfig"

FunctionEnd

;Sections

Section "Application" SEC01

SetOutPath "$INSTDIR"

SetOverwrite ifnewer

File "syncApp.exe"

CreateDirectory \

"$SMPROGRAMS\ocs - Outlook Collaboration Sync"

File "App.ico"

SectionEnd

NSIS Script


Scripting structure22 l.jpg

Scripting Structure

Installer Attributes

  • Determine the behavior and the look and feel of the installer.

  • With these attributes you can

    • change texts that will be shown during the installation,

    • the number of installation types etc.

  • Most of these commands can only be set and are not changeable during runtime.

    • Other basic instructions are Name and InstallDir.

      Name „OCS v.1.0"

      OutFile „syncApp.exe"

      InstallDir "$PROGRAMFILES\ocs"


Scripting structure23 l.jpg

Scripting Structure

Variables

  • You can declare your own variables ($VARNAME) with the Var command.

  • Variables are global and can be used in any Section or Function.

  • Declaring and using a user variable:

    Var TEST ;Declare the variable

    Section testsec

      StrCpy $TEST "123" ;Now you can use the variable $BLA

    SectionEnd


Scripting structure24 l.jpg

Scripting Structure

Variables

  • In addition there is a Stack, which can also be used for temporary storage.

  • To access the stack use the commands:

    • Push adds a value to the stack,

    • Pop removes one and sets the variable.

  • For shared code, there are 20 registers (like $0 and $R0).

    • These static variables don't have to be declared and you won't get any name conflicts.


Scripting structure25 l.jpg

Scripting Structure

Variables

  • If you want to use these variables in shared code,

    • store the original values on the stack

    • and restore the original values afterwards.

  • After calling the function,

    • the variables contain the same value as before.

    • Note the order when using multiple variables (last-in first-out):

      Function testfunc

        Push $R0

        Push $R1

          ...code...

        Pop $R1

        Pop $R0

      FunctionEnd


Scripting structure26 l.jpg

Scripting Structure

Pages

  • An non-silent installer has a set of wizard pages to let the user configure the installer.

  • You can set which pages to display using the Page command (or PageEx for more advanced settings):

    Example:

    Page license

    Page components

    Page directory

    Page instfiles

    UninstPage instfiles


Scripting structure27 l.jpg

Scripting Structure

Sections

  • In a common installer there are several things the user can install.

    • (e.g.: Application, Database, Additional Features, etc.)


Scripting structure28 l.jpg

Scripting Structure

Sections

  • For each component operations must be implemented.

  • In the script, that code is in sections

  • Each visible section is a component for the user to choose from.

  • Uninstallers can also have multiple sections.

    • are prefixed with 'un.'.


Scripting structure29 l.jpg

Scripting Structure

Sections

  • Example:

    Section "Application" SEC01

    SetOutPath "$INSTDIR"

    SetOverwrite ifnewer

    File "syncApp.exe"

    CreateShortCut "$SMPROGRAMS\ocs\ocs.lnk“ "$INSTDIR\syncApp.exe"

    CreateShortCut "$DESKTOP\ocs.lnk“ \

    "$INSTDIR\syncApp.exe"

    File "App.ico"

    CreateDirectory "xsl"

    SetOutPath "$INSTDIR\xsl"

    File "xsl\ACrmToExchange.xsl"

    SectionEnd

    Section "Database" SEC02

    ...

    ExecWait '"$R1\Binn\osql.exe" -E -s \

    "$R2" -i "$INSTDIR\db\restoreDatabase.sql" -o "$R0" -b'

    ...

    ClearErrors

    SectionEnd

    Section "Configuration" SEC03

    SetOutPath "$APPDATA"

    CreateDirectory "ocs"

    SetOutPath "$APPDATA\ocs"

    File "config\licence.xml"

    SectionEnd


Scripting structure30 l.jpg

Scripting Structure

Functions

  • Functions can contain script code, just like sections.

  • The difference between sections and functions is the way they are called.

  • There are two types of functions.

    • user functions and

    • callback functions.


Scripting structure31 l.jpg

Scripting Structure

Functions - User

  • User Functions

    • Are called by the user from

    • within sections or

    • other functions using the Call instruction.

  • User functions will not execute unless you call them.


Scripting structure32 l.jpg

Scripting Structure

Functions - Callback

  • Callback Functions

    • Are called by the installer upon certain defined events such as when the installer starts.

  • Callbacks are optional.

  • Example:

    • If for example you want to welcome the user to your installer you will define a function called .onInit. The NSIS compiler will recognize this function as a callback function by the name and will call it when the installer starts.


Scripting structure33 l.jpg

Scripting Structure

Functions - Callback

  • Example:

    Function .onInit

      MessageBox MB_YESNO "This will install My Program. Do you wish to continue?" IDYES gogogo

        Abort

      gogogo:

    FunctionEnd

  • Abort has a special meaning in callback functions.

    • Abort tells the installer to stop initializing the installer and quit immediately


Scripting structure34 l.jpg

Scripting Structure

Compiler Commands

  • Compiler commands will be executed on compile time on your computer.

  • They can be used for conditional compilation, to

    • include header files,

    • to execute applications,

    • to change the working directory and more.

  • The most common usage is defines.

  • Defines are compile time constants.

    • You can define your product's version number and use it in your script.


Scripting structure35 l.jpg

Scripting Structure

Compiler Commands

  • Example:

    !define VERSION "1.0.3"

    Name "My Program ${VERSION}"

    OutFile "My Program Installer - ${VERSION}.exe“


Scripting structure36 l.jpg

Scripting Structure

Compiler Commands - Macros

  • Another common use is macros.

    • are used to insert code on compile time,

    • depending on defines

    • and using the values of the defines.

  • The macro's commands are inserts at compile time.

  • This allows you to write a general code only once and use it a lot of times but with a few changes.


Scripting structure37 l.jpg

Scripting Structure

Compiler Commands - Macros

  • Example:

    !macro MyFunc UN

    Function ${UN}MyFunc

      Call ${UN}DoRegStuff

      ReadRegStr $0 HKLM Software\MyProgram key

      DetailPrint $0

    FunctionEnd

    !macroend

    !insertmacro MyFunc ""

    !insertmacro MyFunc "un.“

  • This macro helps you avoid writing the same code for both the installer and the uninstaller.

  • The two !insertmacros insert two functions, one for the installer called MyFunc and one for the uninstaller called un.MyFunc and both do exactly the same thing.


Debugging scripts l.jpg

Debugging Scripts

  • There are a few possibilities to help you debugging the code.

    • To display the contents of variables you should use

      • MessageBoxes or

      • DetailPrint.

    • To get a brief overview about all variables you should use the plug-in DumpState.


Debugging scripts39 l.jpg

Debugging Scripts

  • By default all actions of the Installer are printed out in the Log Window.

    • You can access the log if you right-click in the Log Window and select "Copy Details To Clipboard".

  • Write everything into a file


Nsis framework l.jpg

NSIS Framework

  • Utilities

    • MakeNSISW (compiler interface)

    • Zip2Exe (convert ZIP to SFX)

    • Language Files

  • Documentation

    • NSIS User Manual

    • FAQ

    • NSIS Wiki


Utilities l.jpg

Utilities

MakeNSISW

  • NSIS Installers are generated with MakeNSISW

  • How?

    • Simply right click on a .nsi file and selecting compile

    • Commandlineusage:

      makensis [option | script.nsi | - [...]]


Utilities42 l.jpg

Utilities

Zip2Exe

  • Zip2Exe is able to convert a zip File into a simple installer

  • Customizations can be done by changing the header files (Contrib\zip2exe folder)


Utitities l.jpg

Utitities

Zip2Exe

  • After pressing generate, the installer script will be compiled and is ready for use!


Utilities44 l.jpg

Utilities

_

  • NSIS supports multiple languages

  • 49 Language Packs come out of the box (contrib\language folder)


Documentation l.jpg

Documentation

NSIS User Manual

  • Includes:

    • Introduction to NSIS

    • Tutorial: The Basis

    • Reference book

  • Comes out of the box


Documentation46 l.jpg

Documentation

FAQ

  • Answers on the most common questions on NSIS can be found here

http://nsis.sourceforge.net/wiki/Category:FAQ


Documentation47 l.jpg

Documentation

Wiki

  • NSIS Community Portal – NSIS WIKI

    • Sharing of

      • Examples

      • Plug-Ins

      • Tutorials

      • Knowledge around NSIS

      • Etc.

http://nsis.sourceforge.net/wiki


Development tools l.jpg

Development Tools

  • HM NIS

    • http://hmne.sourceforge.net/

  • Venis VIX

    • http://www.spaceblue.com/venis/

  • EclipsePlugin

    • http://eclipsensis.sourceforge.net/


Development tools49 l.jpg

Development Tools

HM NIS - Functionality

  • Multiple scripts edition and compilation interface (MDI).

  • Translatable interface to any language

    • (available in English, Spanish, Polish, French, Czech, Italian, Russian, Greek, German, Chinese, Ukrainian, Portuguese (Brazil), Korean).

  • Syntax highlighting with customizable colors and text attributes.

  • InstallOptions Designer.

  • Plugins support.


Development tools50 l.jpg

Development Tools

HM NIS - Functionality

  • Wizard (special for beginner)

    • that will guide for all steps to create a standard Windows Setup program.

  • Script creation from template files.

  • Code templates with most common commands.

  • Basic NSIS command help with only move the mouse cursor over a command in the editor.

  • Advanced NSIS command help pressing F1 key.

  • Execution of the generate Setup program after script compilation (to try the setup program).

  • No need bulky OCX or run time libraries.


Installer example l.jpg

Installer Example

  • Requirements for the installer

    • Ordinary file copy

    • Creation of links

    • Creation of a config file (xml)

      • using an external shell programm

    • Creation of check procedures

      • is .NET framework installed?


Installer example52 l.jpg

Installer Example

Approach

  • Approach

    • Creating a simple installer using the wizard of HM NIS

    • Including a batch job

      • Creation of a XML Config File

    • Including check function (registry based)

      • Is .Net Framework available


Installer example53 l.jpg

Installer Example

HM NIS - Wizard

  • Start HM NIS EDIT and press

    • File -> New script from Wizard…


Installer example54 l.jpg

Installer Example

HM NIS - Wizard

  • Fill in information about your installation

    • It is used during the installation process


Installer example55 l.jpg

Installer Example

HM NIS - Wizard

  • General installer optiones

    • Setup Icon

    • Setup File

    • Setup Language

      • Multiple languages possible

    • GUI Type

      • Modern

      • Classic

      • None

    • Compression


Installer example56 l.jpg

Installer Example

HM NIS - Wizard

  • General installer optiones

    • Application default directory

    • Licence File

      • Is shown as before the installer starts


Installer example57 l.jpg

Installer Example

HM NIS - Wizard

  • Application Files

    • The installer can contain different chooseable Installationsections

    • This can be setup in the top-left field (etc. Application)

    • Additional the following checkbox must be activated

      • Allow user to select the componenets to install


Installer example58 l.jpg

Installer Example

HM NIS - Wizard

  • Shortcut settings

    • Application Start Menu folder name

    • Allow user to change the Start Menu folder name

    • Create an Internet shortcut in the Start Menu folder

    • Create an Uninstall icon in the Start Menu folder

    • Additional shortcuts can be added via the listbox on the bottom


Installer example59 l.jpg

Installer Example

HM NIS - Wizard

  • Post-Installation settings

    • Executeable program file

    • Parameter

    • Readme - File


Installer example60 l.jpg

Installer Example

HM NIS - Wizard

  • Uninstaller Settings

    • Uninstall prompt

    • Uninstall success message

    • Uninstall Icon


Installer example61 l.jpg

Installer Example

HM NIS - Wizard

  • Last Wizardpage


Installer example62 l.jpg

Installer Example

HM NIS - Wizard

  • The simple installer is ready for testing!

  • Press Shift+F9 for compile and run


Installer example63 l.jpg

Installer Example

HM NIS - Wizard


Installer example64 l.jpg

Installer Example

HM NSI Wizard - Background

  • What was created in behind?

    • The entire installer script <installername>.nsi

    • Executeable Setup File


Installer example65 l.jpg

Installer Example

HM NSI Wizard - Script

Definitions

!define PRODUCT_NAME "ocs - Outlook Collaboration Sync"

!define PRODUCT_VERSION "1.0"

!define PRODUCT_PUBLISHER "mausz.net"

!define PRODUCT_WEB_SITE "http://www.mausz.net"

!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\syncApp.exe"

!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"

!define PRODUCT_UNINST_ROOT_KEY "HKLM„

Pages

; Welcome page

!insertmacro MUI_PAGE_WELCOME

; License page

!insertmacro MUI_PAGE_LICENSE "..\..\sync\installer\lizenz.rtf"

; Components page

!insertmacro MUI_PAGE_COMPONENTS

; Directory page

!insertmacro MUI_PAGE_DIRECTORY

; Instfiles page

!insertmacro MUI_PAGE_INSTFILES

; Finish page

!define MUI_FINISHPAGE_RUN "$INSTDIR\config\XmlConfigWriter.exe"

!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\config\.svn\README.txt"

!insertmacro MUI_PAGE_FINISH


Installer example66 l.jpg

Installer Example

HM NSI Wizard - Script

Languages

; Language files

!insertmacro MUI_LANGUAGE "English"

Additional Installer Attributes

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"

OutFile "Setup.exe"

InstallDir "$PROGRAMFILES\ocs - Outlook Collaboration Sync"

InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""

ShowInstDetails show

ShowUnInstDetails show

Installer Sections

Section "Application" SEC01

SetOutPath "$INSTDIR"

SetOverwrite try

File "App.ico“

SectionEnd

Section -Post

WriteUninstaller "$INSTDIR\uninst.exe"

WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\config\XmlConfigWriter.exe„

SectionEnd


Installer example67 l.jpg

Installer Example

HM NSI Wizard - Script

Uninstaller Functions

Function un.onUninstSuccess

HideWindow

MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."

FunctionEnd

Function un.onInit

MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2

Abort

FunctionEnd

Uninstaller Section

Section Uninstall

Delete "$INSTDIR\${PRODUCT_NAME}.url"

Delete "$INSTDIR\uninst.exe"

Delete "$INSTDIR\xsl\CExchangeToCrm.xsl“

RMDir "$INSTDIR\config\.svn"

RMDir "$INSTDIR\config"

RMDir "$INSTDIR"

..

DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"

DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"

SetAutoClose true

SectionEnd


Installer example68 l.jpg

Installer Example

Defintions

!define PRODUCT_NAME "ocs - Outlook Collaboration Sync"

!define PRODUCT_VERSION "1.0"

  • These constants can be used within the entire script

    Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"


Installer example69 l.jpg

Installer Example

Pages

  • The used Pages are predefined pages which are part of the NSIS2 Framework

    ; Welcome page

    !insertmacro MUI_PAGE_WELCOME

    ; License page

    !insertmacro MUI_PAGE_LICENSE "..\..\sync\installer\lizenz.rtf"

    ; Components page

    !insertmacro MUI_PAGE_COMPONENTS

  • Predefined are called with

    !insertmacro pagename [parameters]

  • The order of the entries decides about the point of execution


Installer example70 l.jpg

Installer Example

Pages

  • Custompages are called with

    Page custom pagename [Parameters]

  • Example:

    Page custom DatabaseConfig

    Page custom LicenceConfig


Installer example71 l.jpg

Installer Example

Languages

  • Languagepacks can be included with

    !insertmacro MUI_LANGUAGE “Language"

  • Available languages are listed in the following folder:

    NSIS Folder\Contrib\Language files


Installer example72 l.jpg

Installer Example

Installer Attributes

  • Applicationname

    Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"

  • Output File (Installer)

    OutFile "Setup.exe„

  • Installation Directory

    InstallDir "$PROGRAMFILES\ocs„

  • Registry Key

    InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "„

  • Hide or show the progress during installation

    ShowInstDetails show

    ShowUnInstDetails show


Installer example73 l.jpg

Installer Example

Installer Section

  • As defined = „Application“

    Section "Application" SEC01

  • Definition of the OutputPath

    SetOutPath "$INSTDIR"

  • SetOverwrite try defines to overwrite existing files if possible

    SetOverwrite try

  • The File commando copies the given File into the defined Output Path

    File "App.ico"

  • Creation of a directory

    CreateDirectory "$SMPROGRAMS\ocs"

  • Creation of a short cut

    CreateShortCut "$SMPROGRAMS\ocs\ocs.lnk„ \ "$INSTDIR\syncApp.exe"

    SectionEnd


Installer example74 l.jpg

Installer Example

Uninstaller Functions

  • „Eventdriven“ functions

  • Is called in case of a successful uninstallation

    Function un.onUninstSuccess

    HideWindow

    MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."

    FunctionEnd

  • Is called in case of starting the uninstallation process

    Function un.onInit

    MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2

    Abort

    FunctionEnd


Installer example75 l.jpg

Installer Example

Uninstaller Section

  • Uninstaller Section

    Section Uninstall

    • Deletes the given file

      Delete "$INSTDIR\xsl\CExchangeToCrm.xsl“

    • Deletes the given directory

      RMDir "$INSTDIR\xsl"

    • Deletes the given registry key

      DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"

      DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"

      SectionEnd


Installer example76 l.jpg

Installer Example

Creation of a XML config file

  • Approach

    • Creation of a custom page

      • input option for username,

      • password and

      • url

    • Include to the installer

    • Creation of an user function

      • Call of a batch job according to the given config input values


Installer example77 l.jpg

Installer Example

Creating the custom page

  • Using HM NSI a new custom page can be created with

    • File -> New Install Options file


Installer example78 l.jpg

Installer Example

Creating the custom page

  • A control toolbar can be found on the right side of the HM NSI Window

  • A control can be moved to the window by one click on the required control and another click on the desired position within the custom page


Installer example79 l.jpg

Installer Example

Creating the custom page

  • On the right side a property bar is located which can be used to configure the controls

  • The FieldNum property is very important, because this is used within the script to access the control

  • After every control is configured the custom page must be safed (etc. licenceconfig.ini)


Installer example80 l.jpg

Installer Example

Include a custom page into the Script

  • First of all the callbackfunction .onInit must be created:

    Function .onInit

    !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "licenceconfig.ini" "LicenceConfig"

    FunctionEnd

  • The MUI_INSTALLOPTIONS_EXCTRACT_AS Macro is needed to include custompages


Installer example81 l.jpg

Installer Example

Include a custom page into the Script

  • The custom page must be placed into the right page order

    ; Welcome page

    !insertmacro MUI_PAGE_WELCOME

    ; License page

    !insertmacro MUI_PAGE_LICENSE "lizenz.rtf"

    ; Components page

    !insertmacro MUI_PAGE_COMPONENTS

    ; Directory page

    !insertmacro MUI_PAGE_DIRECTORY

    Custom Pages

    Page custom LicenceConfig

    ; Instfiles page

    !insertmacro MUI_PAGE_INSTFILES

    ...


Installer example82 l.jpg

Installer Example

Include a custom page into the Script

  • A function must be created with the defined custom page name

    Function LicenceConfig

    !insertmacro MUI_HEADER_TEXT "LicenceConfig" "subtitle"

    !insertmacro MUI_INSTALLOPTIONS_DISPLAY "LicenceConfig"

    !insertmacro MUI_INSTALLOPTIONS_READ $6 "LicenceConfig" "Field 6" "State"

    !insertmacro MUI_INSTALLOPTIONS_READ $7 "LicenceConfig" "Field 7" "State"

    !insertmacro MUI_INSTALLOPTIONS_READ $8 "LicenceConfig" "Field 8" "State"


Installer example83 l.jpg

Installer Example

Include a custom page into the Script

  • Macro description

    • Header text configuration

      !insertmacro MUI_HEADER_TEXT "LicenceConfig" "subtitle“

    • Showing the page

      !insertmacro MUI_INSTALLOPTIONS_DISPLAY "LicenceConfig

    • Read a value from a control into a variabel

      !insertmacro MUI_INSTALLOPTIONS_READ $6 "LicenceConfig" "Field 6" "State“

      !insertmacro MUI_INSTALLOPTIONS_READ $7 "LicenceConfig" "Field 7" "State“

      !insertmacro MUI_INSTALLOPTIONS_READ $8 "LicenceConfig" "Field 8" "State"

      FunctionEnd


Installer example84 l.jpg

Installer Example

Include a custom page into the Script

!insertmacro MUI_HEADER_TEXT "LicenceConfig" "subtitle“

!insertmacro MUI_INSTALLOPTIONS_DISPLAY "LicenceConfig

!insertmacro MUI_INSTALLOPTIONS_READ $6 "LicenceConfig" "Field 6" "State“

!insertmacro MUI_INSTALLOPTIONS_READ $7 "LicenceConfig" "Field 7" "State“

!insertmacro MUI_INSTALLOPTIONS_READ $8 "LicenceConfig" "Field 8" "State"

FunctionEnd

Header_Text

Field 6

Field 7

Field 8


Installer example85 l.jpg

Installer Example

Include a custom page into the Script

  • Save the given values into a xml file

    • This is done by calling a batch program with the required parameters

    • To call a batch programm the command ExecWait is used

      ExecWait '"$INSTDIR\config\XmlConfigWriter.exe" “$6" “$7" "$8"‘

  • Now, the installer is ready for use with enhanced functionality


Installer example86 l.jpg

Installer Example

Check procedure

  • To check if the .Net Framwork is available the following function must be included

    Function GetDotNETVersion

    Push $0

    Push $1

    System::Call "mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1"

    StrCmp $1 "error" 0 +2

    StrCpy $0 "not found"

    Pop $1

    Exch $0

    FunctionEnd

http://nsis.sourceforge.net/wiki/Get_.NET_Version


Installer example87 l.jpg

Installer Example

Check procedure

  • This functions is called during the .onInit Function

    Function .onInit

    Call GetDotNETVersion

    Pop $0

    StrCmp $0 "not found" finish

    Finish:

    MessageBox MB_OK|MB_ICONSTOP ".NET runtime library is not installed. Please download the runtime envirnoment from http://www.microsoft.com/download and install it!"

    Abort

    FunctionEnd

http://nsis.sourceforge.net/wiki/Get_.NET_Version


Appendix a l.jpg

Appendix A

Features

  • Generates self contained executable installers

  • Support for ZLib, BZip2 and LZMA data compression

    • files can be compressed individually or together)

  • Uninstall support

    • installer can generate an uninstaller)

  • Customizable user interface

    • dialogs, fonts, backgrounds, icons, text, checkmarks, images etc.

  • Classic and Modern wizard interface

[http://nsis.sourceforge.net/features/]


Appendix a89 l.jpg

Appendix A

Features

  • Fully multilingual, support for multiple languages (including RTL languages) in one installer.

    • More than 40 translations are already available, but you can also create your own.

  • Page system:

    • You can add standard wizard pages or custom pages

  • User selection of installation components, tree for component selection

  • Multiple install configurations

    • (usually Minimal, Typical, Full),

    • and custom configuration

[http://nsis.sourceforge.net/features/]


Appendix a90 l.jpg

Appendix A

Features

  • Installer self-verification using a CRC32 checksum

  • Small overhead over compressed data size

    • (34 KB with default options)

  • Ability to display a license agreement in text or RTF format

  • Ability to detect destination directory from the registry

[http://nsis.sourceforge.net/features/]


Appendix a91 l.jpg

Appendix A

Features

  • Easy to use plug-in system

    • (lots of plug-ins for creation of custom dialogs, internet connections, HTTP downloading, file patching, Win32 API calls etc. are included)

  • Installers can be as large as 2GB

  • Optional silent mode for automated installations

  • A preprocessor with support for defined symbols, macro's, conditional compilation, standard predefines

  • A lovely coding experience with elements of PHP and assembly

    • (includes user variables, a stack, real flow control, etc.)

[http://nsis.sourceforge.net/features/]


Appendix a92 l.jpg

Appendix A

Features

  • Installers have their own VMs that let you write code that can support:

    • File extraction (with configurable overwrite parameters)

    • File/directory copying, renaming, deletion, searching

    • Plug-in DLL calling

    • DLL/ActiveX control registration/deregistration

    • Executable execution (shell execute and wait options)

    • Shortcut creation

[http://nsis.sourceforge.net/features/]


Appendix a93 l.jpg

Appendix A

Features

  • Registry key reading/setting/enumerating/deleting

  • INI file reading/writing

  • Generic text file reading/writing

  • Powerful string and integer manipulation

  • Window finding based on class name or title

  • User interface manipulation (font/text setting)

  • Window message sending

  • User interaction with message boxes or custom pages

[http://nsis.sourceforge.net/features/]


Appendix a94 l.jpg

Appendix A

Features

  • Branching, comparisons, etc.

  • Error checking

  • Reboot support, including delete or rename on reboot

  • Installer behaviour commands (such as show/hide/wait/etc)

  • User functions in script

  • Callback functions for user actions

[http://nsis.sourceforge.net/features/]


Appendix a95 l.jpg

Appendix A

Features

  • Completely free for any use.

[http://nsis.sourceforge.net/features/]


  • Login