Need NSIS example script with all necessary files for script to run - nsis

I am very new to NSIS, and i was wondering if there is a way to change the splash screen with modern UI, on the first and last pages:
Installer Closing Page
Installer Opening Page

!define MUI_WELCOMEFINISHPAGE_BITMAP "c:\myfiles\wizard.bmp"
!include MUI2.nsh
...
This is of course documented in the Readme.

Related

Custom texts for uninstaller

So I made patch installer for certain game. It works nicely, dumb design decisions of NSIS notwithstanding. I use NSIS 3.03 with MUI2.
Due to nature of patch (it is not separate application, just patch applied on already existing program) I had to use pretty much all custom texts for installer (like MUI_WELCOMEPAGE_TITLE, MUI_WELCOMEPAGE_TEXT etc). Grammar of my native language didn't helped.
But then I foolishly wanted to include uninstaller. While it works, it seems like there are almost no custom texts for it. Only ones that work are MUI_UNCONFIRMPAGE_TEXT_TOP and MUI_UNCONFIRMPAGE_TEXT_LOCATION. Other default texts for uninstallator look like crap due to aforementioned issues (patch instead of real app, grammar).
For example, on welcome page of uninstaller there is text similar to "Before starting the uninstallation, make sure [NAME OF PATCH TO GAME] is not running.". It should be something like "Before starting the uninstallation, make sure [NAME OF GAME, NOT NAME OF PATCH] is not running.". No, there is no MUI_UNWELCOMEPAGE_TEXT or anything like that.
How to change other texts in uninstaller? This kind of oversight is silly for 10 year old installer creator on its third major version. WTF?
From the documentation:
Page settings apply to a single page and should be set before inserting a page macro. The same settings can be used for installer and uninstaller pages. You have to repeat the setting if you want it to apply to multiple pages.
!include MUI2.nsh
!define MUI_WELCOMEPAGE_TEXT "Installer blah blah"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_WELCOMEPAGE_TEXT "Uninstaller blah blah"
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Section
SetOutPath "$InstDir"
WriteUninstaller "$InstDir\Un.exe"
ExecShell "" "$InstDir\Un.exe"
SectionEnd
Section Uninstall
Delete "$InstDir\Un.exe"
RMDir "$InstDir"
SectionEnd

How can I change the dir of the header image?

I have seen in all scripts when I have to change the image header that uses the ${NSISDIR} like this:
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT
!define MUI_HEADERIMAGE_BITMAP ${NSISDIR}\Contrib\Graphics\Header\nsis-r.bmp
But I need to put the image in other folder to not depending of NSIS dir.
Does anyone know how to do this?
I can not depend of /home/username too.
I want that because the wizard can be compiled in any linux PC.
You can try a relative path...
Edit:
Use a relative path when the .bmp is in the same folder tree as your .nsi:
!define MUI_HEADERIMAGE_BITMAP .\mygfx\header.bmp
If you want to use one of the other NSIS images you should just use the NSISDIR define, the POSIX compiler will convert the path:
!define MUI_HEADERIMAGE_BITMAP ${NSISDIR}\Contrib\Graphics\Header\nsis-r.bmp
You just use
Contrib\Graphics\Header\nsis-r.bmp
And folder Contrib is local to script place(folder)

To add a license page to my installer using NSIS script

I added this command in NSIS script to add license page
; License page
!insertmacro MUI_PAGE_LICENSE
but i getting this error
!insertmacro: macro "MUI_PAGE_LICENSE" requires 1 parameter(s), passed 0!
help me step step by process to add a license page to my installer thanks
You need to specify the actual license to be displayed (text or rich text format)
!insertmacro MUI_PAGE_LICENSE "path\to\myLicense.txt"

NSIS Installer based on zip?

Does anyone have a basic NSIS script example that is "installer based on zip"? Or could tell me the command? I know NSIS has that tool built in, but I want to edit a script based on that. NSIS only outputs an .exe of the installer based on zip. I would like to start from script code.
Thanks.
The zip2exe tool generates a simple script that it passes to makensis, most of the code is in files it includes:
!define ZIP2EXE_COMPRESSOR_ZLIB
!define ZIP2EXE_INSTALLDIR "c:\foo"
!include "${NSISDIR}\Contrib\zip2exe\Base.nsh" ; You could edit this if you wanted to keep using zip2exe
!include "${NSISDIR}\Contrib\zip2exe\Classic.nsh"
!insertmacro SECTION_BEGIN
File "file1fromzip.txt"
File "file2fromzip.exe"
!insertmacro SECTION_END
you can use the following script to extract the zip files in the destination location and before you compile this script you need to download the ZipDLL.dll place it in your NSIS installation folder.
OutFile "Zip.exe"
section
ZipDLL::extractall "C:\Users\raj\Desktop\envConfig.zip" "C:\Program Files (x86)\Zip"
sectionend
To build on Anders answer, a few additional things should be done in the latest version. In particular ZIP2EXE_NAME and ZIP2EXE_OUTFILE should be set:
!define ZIP2EXE_COMPRESSOR_ZLIB
!define ZIP2EXE_INSTALLDIR "c:\foo"
!define ZIP2EXE_NAME "My Application"
!define ZIP2EXE_OUTFILE "MyInstaller.exe"
!include "${NSISDIR}\Contrib\zip2exe\Base.nsh"
!include "${NSISDIR}\Contrib\zip2exe\Classic.nsh"
!insertmacro SECTION_BEGIN
File "file1fromzip.txt"
File "file2fromzip.exe"
!insertmacro SECTION_END
Classic.nsh can be replaced with Modern.nsh for the "Modern" UI.
Also note that either the files need to be enumerated in the "File" section, or if you have your files in a folder, you can include the entire contents:
File /r MyFolder\*.*
This will NOT create "MyFolder" inside the install target directory.

Multiple paths in NSIS. Code doesnt get executed

I need to ask user for several paths before installation, but i cannot get it done in NSIS. Seems like my code doesnt get referenced in MUI:
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico""
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!define MUI_CUSTOMPAGECOMMANDS
!define MUI_DIRECTORYPAGE
!define MUI_CUSTOMFUNCTION_COMPONENTS_LEAVE ComponentPost
!define MUI_CUSTOMFUNCTION_DIRECTORY_SHOW DirectoryShow
!define MUI_CUSTOMFUNCTION_DIRECTORY_LEAVE DirectoryLeave
And at compilation I get
install function "ComponentPost" not referenced - zeroing code (0-2) out
install function "DirectoryShow" not referenced - zeroing code (2-49) out
install function "DirectoryLeave" not referenced - zeroing code (49-61) out
Obviously, it the code of these three functions doesnt get executed
First time I see !define MUI_CUSTOMPAGECOMMANDS and some others. There is no reference for them in NSIS or manual. What are them?
If you want to add page Directory into your installer use macro named MUI_PAGE_DIRECTORY (and not MUI_DIRECTORYPAGE)
To add PRE/SHOW/LEAVE functions for this page use
MUI_PAGE_CUSTOMFUNCTION_PRE function
MUI_PAGE_CUSTOMFUNCTION_SHOW function
MUI_PAGE_CUSTOMFUNCTION_LEAVE function
These defines should be set before inserting a page macro.
I think the easiest way for you is to modify an existing example (can be found in NSIS\Examples directory), your script does not make a sense at all.

Resources