Creazione di un setup con NSIS



Innanzitutto cos'è NSIS?

E' un programma opensource, che per mezzo di script, permette la creazione di setup d'installazione o più semplicemente degli eseguibili per la distribuzione delle vostre applicazioni.
Chi non conosce questa schermata?




Ebbene si è stata fatta con NSIS, che a sua volta è stato creato dai creatori di Winamp (NullSoft), il celebre player multimediale.

L'installazione permette anche la creazione del processo inverso, cioè la disinstallazione.

La prima cosa da fare per utilizzarlo è scaricare il compilatore degli script a QUESTO indirizzo.

Per i più pigri consiglio l'installazione anche del generatore automatico di script opensource anche questo.

Ecco l'esempio di un semplice script

!include "MUI.nsh"
Name 'nomeprogramma'
OutFile 'nomeprogramma.exe'
SilentInstall Normal
CRCCheck On
ComponentText 'testo di presentazione'
AutoCloseWindow False
ShowInstDetails Show
DirText 'Seleziona la directory di installazione'
InstallDir '$PROGRAMFILES\nomeprogramma'
InstallDirRegKey HKEY_LOCAL_MACHINE SOFTWARE\nomeprogramma ""
BrandingText "by Azienda"
SetCompress Auto
SetDateSave On
SetDataBlockOptimize On
!define MUI_ABORTWARNING
!define MUI_ICON "percorsoicona.ico"
!define MUI_UNICON "percorsoicona.ico"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "percorsolicenza.txt"

var ICONS_GROUP
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "nomeprogramma"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\nomeprogramma"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu"!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
!insertmacro MUI_LANGUAGE "Italian"

Section '!nomeprogramma (Richiesto)'
SetOutPath $INSTDIR
SetOverwrite on
File /r "filediinstallazione\*.*"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\nomeprogramma.lnk" "$INSTDIR\nomeprogramma.exe"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
CreateShortCut "$DESKTOP\nomeprogramma.lnk" "$INSTDIR\nomeprogramma.exe"
!insertmacro MUI_STARTMENU_WRITE_END
WriteUninstaller $INSTDIR\Uninstall.exe
SectionEnd

Section -post
WriteRegStr HKLM SOFTWARE\nomeprogramma "" $INSTDIR

#Uninstall key
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OltreB2" "DisplayName" "nomeprogramma"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OltreB2" "DisplayIcon" "percorsoicona.ico"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OltreB2" "DisplayVersion" "versione"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OltreB2" "UninstallString" "$INSTDIR\Uninstall.exe"
SectionEnd

Section Uninstall
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\nomeprogramma"
DeleteRegKey HKLM "SOFTWARE\nomeprogramma"
Delete "$SMPROGRAMS\$ICONS_GROUP"
Delete "$DESKTOP\nomeprogramma.lnk"
RMDir /r "$INSTDIR\"
SectionEnd

Peccato per la brutta formattazione ma lo script è funzionante al 100% ed è completo di disinstallazione oltre ad essere abbastanza personalizzato.

Io ho cominciato ad usarlo da una settimana, ma ho già creato un setup per un applicativo che richiede la verifica di IIS, verifica del Framework installato, verifica di SQL Server prima di essere installato o altrimenti procede alla loro installazione, creazione/rimozione di cartelle virtuali ecc.

QUI una lista di tutte le personalizzazioni che potete applicare ai vostri scripts.

QUI il manuale d'istruzioni per l'utilizzo di NSIS.
Share on Google Plus

About Tebby

Software developer from years now VTECRM developer, smiles' lover, informations' eater, interested of all.
    Blogger Comment

10 commenti :

Anonimo ha detto...

onestamente non conosco quella schermata....forse perche' lavoro con un mac...
cmq bel sito!

Tebby ha detto...

Probabilmente per il setup d'installazione di Amule non hanno usato NSIS.
Io non ho un mac :-)

Grazie

Bart ha detto...

Ottimo programma... mi servirebbe un aiuto per la creazione di un pacchetto per un applicazione vb.net quindi ho necessita di verificare la presenza di questo "motore" e eventualmente installarlo... mi aiuteresti?

Tebby ha detto...

quindi ti interessa verificare la presenza del framework sul pc dove andrai ad installare il programma?

Bart ha detto...

si ma anche eventualmente installarlo se manca (lo implemento nella lista di file da copiare)...

Tebby ha detto...

Questo Link vale piu di mille parole

Unknown ha detto...

ciao.

due domande per cortesia:

1.che tu sappia esite qualche guida
in italiano?

2.conosci il nome di qualche altro programma che ha le stesse funzioni?

Grazie

Simone

Tebby ha detto...

ciao Simone
1- guide in italiano vicine allo 0...trovi poco o niente...forse qualche esempio, almeno ti parlo di quando ho cercato io fino a circa un mesetto fa

2- a mente mi viene InnoSetup, se vuoi faccio una ricerca rapida per elencarteli

Marco ha detto...

Salve,
Ho provato lo script e va che è una meraviglia, però mi trovo davanti a un problema.
Considerato che il mio software è realizzato in VB6, devo installare tutte le librerie del caso e componenti dll e ocx da me realizzati.
Non ho trovato nulla, mi puoi aiutare?
Grazie

Tebby ha detto...

le librerie vb6 di solito hanno un pacchetto d'installazione quindi potresti copiare questo setup nella stessa directory del setup che stai creando e lanciarlo durante l'esecuzione con EXECWAIT o EXECSHELL.

Mentre le tue dll e componenti ocx che probabilmente saranno nella stessa directory dove andrai ad installare il tuo programma le puoi registrare con EXECSHELL "REGSVR32 file.dll"