Simple tutorials: Difference between revisions
(Delete uninstaller as the last operation) |
|||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{PageAuthor|eldri005}} | {{PageAuthor|eldri005}} | ||
If this page is your first experience of NSIS, you will need the [ | ==NSIS Setup== | ||
If this page is your first experience of NSIS, you will need the [[Download|NSIS compiler]] to transform the following scripts, and any others you create, into functioning installers. You can use the NSIS Menu and under the Compiler section click <i>Compile NSI scripts</i> to start MakeNSISW. | |||
The makensisw.exe in the NSIS installation folder is the actual compiler. It has a graphical front end that explains three ways to load scripts, so it's very easy to use. Once you have installed NSIS, to create an installer, copy a script into a text editor, save the file with a .nsi extension, and load the file into the makensisw compiler. | |||
==The bare minimum== | ==The bare minimum== | ||
Line 8: | Line 11: | ||
# default section start; every NSIS script has at least one section. | # default section start; every NSIS script has at least one section. | ||
Section | |||
# default section end | # default section end | ||
SectionEnd | |||
</highlight-nsis> | </highlight-nsis> | ||
Line 19: | Line 22: | ||
<highlight-nsis> | <highlight-nsis> | ||
# set the name of the installer | # set the name of the installer | ||
Outfile "hello world.exe" | |||
# create a default section. | # create a default section. | ||
Section | |||
# create a popup box, with an OK button and the text "Hello world!" | # create a popup box, with an OK button and the text "Hello world!" | ||
MessageBox MB_OK "Hello world!" | |||
SectionEnd | |||
</highlight-nsis> | </highlight-nsis> | ||
==Simple hello world - writing text to a file== | |||
This hello world script will write "hello world" to a text file when the installer is run | |||
<highlight-nsis> | |||
# declare name of installer file | |||
Outfile "hello world.exe" | |||
# open section | |||
Section | |||
# create a popup box, with an OK button and some text | |||
MessageBox MB_OK "Now We are Creating Hello_world.txt at Desktop!" | |||
/* open an output file called "Hello_world.txt", | |||
on the desktop in write mode. This file does not need to exist | |||
before script is compiled and run */ | |||
FileOpen $0 "$DESKTOP\Hello_world.txt" w | |||
# write the string "hello world!" to the output file | |||
FileWrite $0 "hello world!" | |||
# close the file | |||
FileClose $0 | |||
# Show Success message. | |||
MessageBox MB_OK "Hello_world.txt has been created successfully at Desktop!" | |||
# end the section | |||
SectionEnd | |||
</highlight-nsis> | |||
==Simply install a file== | ==Simply install a file== | ||
Line 39: | Line 72: | ||
<highlight-nsis> | <highlight-nsis> | ||
# define the name of the installer | # define the name of the installer | ||
Outfile "simple installer.exe" | |||
# define the directory to install to, the desktop in this case as specified | # define the directory to install to, the desktop in this case as specified | ||
# by the predefined $DESKTOP variable | # by the predefined $DESKTOP variable | ||
InstallDir $DESKTOP | |||
# default section | # default section | ||
Section | |||
# define the output path for this file | # define the output path for this file | ||
SetOutPath $INSTDIR | |||
# define what to install and place it in the output path | # define what to install and place it in the output path | ||
File test.txt | File test.txt | ||
SectionEnd | |||
</highlight-nsis> | </highlight-nsis> | ||
Line 62: | Line 95: | ||
<highlight-nsis> | <highlight-nsis> | ||
# define installer name | # define installer name | ||
OutFile "installer.exe" | |||
# set desktop as install directory | # set desktop as install directory | ||
Line 68: | Line 101: | ||
# default section start | # default section start | ||
Section | |||
# define output path | # define output path | ||
SetOutPath $INSTDIR | |||
# specify file to go in output path | # specify file to go in output path | ||
Line 77: | Line 110: | ||
# define uninstaller name | # define uninstaller name | ||
WriteUninstaller $INSTDIR\uninstaller.exe | |||
#------- | #------- | ||
# default section end | # default section end | ||
SectionEnd | |||
# create a section to define what the uninstaller does. | # create a section to define what the uninstaller does. | ||
# the section will always be named "Uninstall" | # the section will always be named "Uninstall" | ||
Section "Uninstall" | |||
# | # Delete installed file | ||
Delete $INSTDIR\test.txt | |||
# | # Delete the uninstaller | ||
Delete $INSTDIR\uninstaller.exe | |||
# Delete the directory | |||
RMDir $INSTDIR | |||
SectionEnd | |||
</highlight-nsis> | </highlight-nsis> | ||
Line 102: | Line 137: | ||
<highlight-nsis> | <highlight-nsis> | ||
# Name the installer | # Name the installer | ||
OutFile "installer.exe" | |||
# default section | # default section | ||
Section | |||
# create a shortcut named "new shortcut" in the start menu programs directory | # create a shortcut named "new shortcut" in the start menu programs directory | ||
# presently, the new shortcut doesn't call anything (the second field is blank) | # presently, the new shortcut doesn't call anything (the second field is blank) | ||
CreateShortcut "$SMPROGRAMS\new shortcut.lnk" "" | |||
# to delete shortcut, go to start menu directory and manually delete it | # to delete shortcut, go to start menu directory and manually delete it | ||
# default sec end | # default sec end | ||
SectionEnd | |||
</highlight-nsis> | |||
==Simple installer and uninstaller with start menu item== | |||
This installer will do the following: create an installer named "installer.exe"; an uninstaller on the desktop; a shortcut in the start menu that points to the uninstaller. | |||
<highlight-nsis> | |||
# define name of installer | |||
OutFile "installer.exe" | |||
# define installation directory | |||
InstallDir $DESKTOP | |||
# For removing Start Menu shortcut in Windows 7 | |||
RequestExecutionLevel user | |||
# start default section | |||
Section | |||
# set the installation directory as the destination for the following actions | |||
SetOutPath $INSTDIR | |||
# create the uninstaller | |||
WriteUninstaller "$INSTDIR\uninstall.exe" | |||
# create a shortcut named "new shortcut" in the start menu programs directory | |||
# point the new shortcut at the program uninstaller | |||
CreateShortcut "$SMPROGRAMS\new shortcut.lnk" "$INSTDIR\uninstall.exe" | |||
SectionEnd | |||
# uninstaller section start | |||
Section "uninstall" | |||
# Remove the link from the start menu | |||
Delete "$SMPROGRAMS\new shortcut.lnk" | |||
# Delete the uninstaller | |||
Delete $INSTDIR\uninstaller.exe | |||
RMDir $INSTDIR | |||
# uninstaller section end | |||
SectionEnd | |||
</highlight-nsis> | </highlight-nsis> | ||
==Simply get current version of Java Runtime Environment== | |||
This installer just checks the value of the CurrentVersion string for the JRE in the local machine registry using [http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.2.12 readRegStr]. If the result is blank, the JRE is probably not installed. | |||
<highlight-nsis> | |||
# name the installer | |||
OutFile "installer.exe" | |||
#default section start | |||
Section | |||
# read the value from the registry into the $0 register | |||
ReadRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion | |||
# print the results in a popup message box | |||
MessageBox MB_OK "version: $0" | |||
# default section end | |||
SectionEnd | |||
</highlight-nsis> | |||
==Check if user is administrator== | ==Check if user is administrator== | ||
Line 126: | Line 218: | ||
<highlight-nsis> | <highlight-nsis> | ||
# name installer | # name installer | ||
OutFile "installer.exe" | |||
# default section start | # default section start | ||
Section | |||
# call | # call UserInfo plugin to get user info. The plugin puts the result in the stack | ||
UserInfo::GetAccountType | |||
# pop the result from the stack into $0 | # pop the result from the stack into $0 | ||
Pop $0 | |||
# compare the result with the string "Admin" to see if the user is admin. | # compare the result with the string "Admin" to see if the user is admin. | ||
# If match, jump 3 lines down. | # If match, jump 3 lines down. | ||
StrCmp $0 "Admin" +3 | |||
# if there is not a match, print message and return | # if there is not a match, print message and return | ||
MessageBox MB_OK "not admin: $0" | |||
Return | |||
# otherwise, confirm and return | # otherwise, confirm and return | ||
MessageBox MB_OK "is admin" | |||
# default section end | # default section end | ||
SectionEnd | |||
</highlight-nsis> | </highlight-nsis> | ||
[[Category:Tutorials]] | [[Category:Tutorials]] |
Latest revision as of 14:18, 23 March 2022
Author: eldri005 (talk, contrib) |
NSIS Setup
If this page is your first experience of NSIS, you will need the NSIS compiler to transform the following scripts, and any others you create, into functioning installers. You can use the NSIS Menu and under the Compiler section click Compile NSI scripts to start MakeNSISW.
The makensisw.exe in the NSIS installation folder is the actual compiler. It has a graphical front end that explains three ways to load scripts, so it's very easy to use. Once you have installed NSIS, to create an installer, copy a script into a text editor, save the file with a .nsi extension, and load the file into the makensisw compiler.
The bare minimum
# name the installer OutFile "Installer.exe" # default section start; every NSIS script has at least one section. Section # default section end SectionEnd
Simple hello world - popup box
This hello world script will create a popup box with the words "hello world" in it and an "OK" button, when the installer is run
# set the name of the installer Outfile "hello world.exe" # create a default section. Section # create a popup box, with an OK button and the text "Hello world!" MessageBox MB_OK "Hello world!" SectionEnd
Simple hello world - writing text to a file
This hello world script will write "hello world" to a text file when the installer is run
# declare name of installer file Outfile "hello world.exe" # open section Section # create a popup box, with an OK button and some text MessageBox MB_OK "Now We are Creating Hello_world.txt at Desktop!" /* open an output file called "Hello_world.txt", on the desktop in write mode. This file does not need to exist before script is compiled and run */ FileOpen $0 "$DESKTOP\Hello_world.txt" w # write the string "hello world!" to the output file FileWrite $0 "hello world!" # close the file FileClose $0 # Show Success message. MessageBox MB_OK "Hello_world.txt has been created successfully at Desktop!" # end the section SectionEnd
Simply install a file
This installer script will copy the file "test.txt" to the installation directory. First, create the test.txt file in the same directory as the installer script below then compile the installer script. If the installer script is on the Desktop, delete the test.txt file before running the compiled installer. Running the simple installer installs the test.txt file to the Desktop.
# define the name of the installer Outfile "simple installer.exe" # define the directory to install to, the desktop in this case as specified # by the predefined $DESKTOP variable InstallDir $DESKTOP # default section Section # define the output path for this file SetOutPath $INSTDIR # define what to install and place it in the output path File test.txt SectionEnd
Install a file and create an uninstaller to remove it
This script will do the following: create an installer named "installer.exe"; install a file named "test.txt" to the desktop; create an uninstaller named "uninstaller.exe" on the desktop. The uninstaller will remove itself and the installed text file.
# define installer name OutFile "installer.exe" # set desktop as install directory InstallDir $DESKTOP # default section start Section # define output path SetOutPath $INSTDIR # specify file to go in output path File test.txt # define uninstaller name WriteUninstaller $INSTDIR\uninstaller.exe #------- # default section end SectionEnd # create a section to define what the uninstaller does. # the section will always be named "Uninstall" Section "Uninstall" # Delete installed file Delete $INSTDIR\test.txt # Delete the uninstaller Delete $INSTDIR\uninstaller.exe # Delete the directory RMDir $INSTDIR SectionEnd
This installer creates a start menu item, nothing more
# Name the installer OutFile "installer.exe" # default section Section # create a shortcut named "new shortcut" in the start menu programs directory # presently, the new shortcut doesn't call anything (the second field is blank) CreateShortcut "$SMPROGRAMS\new shortcut.lnk" "" # to delete shortcut, go to start menu directory and manually delete it # default sec end SectionEnd
This installer will do the following: create an installer named "installer.exe"; an uninstaller on the desktop; a shortcut in the start menu that points to the uninstaller.
# define name of installer OutFile "installer.exe" # define installation directory InstallDir $DESKTOP # For removing Start Menu shortcut in Windows 7 RequestExecutionLevel user # start default section Section # set the installation directory as the destination for the following actions SetOutPath $INSTDIR # create the uninstaller WriteUninstaller "$INSTDIR\uninstall.exe" # create a shortcut named "new shortcut" in the start menu programs directory # point the new shortcut at the program uninstaller CreateShortcut "$SMPROGRAMS\new shortcut.lnk" "$INSTDIR\uninstall.exe" SectionEnd # uninstaller section start Section "uninstall" # Remove the link from the start menu Delete "$SMPROGRAMS\new shortcut.lnk" # Delete the uninstaller Delete $INSTDIR\uninstaller.exe RMDir $INSTDIR # uninstaller section end SectionEnd
Simply get current version of Java Runtime Environment
This installer just checks the value of the CurrentVersion string for the JRE in the local machine registry using readRegStr. If the result is blank, the JRE is probably not installed.
# name the installer OutFile "installer.exe" #default section start Section # read the value from the registry into the $0 register ReadRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion # print the results in a popup message box MessageBox MB_OK "version: $0" # default section end SectionEnd
Check if user is administrator
Sometimes, it's necessary to check if an installer's user has administrative privileges. This simple script checks for that using the "UserInfo" plugin. There's a more sophisticated alternative at http://forums.winamp.com/showthread.php?threadid=195020, but this method seems to work fine. Another example of UserInfo can be found in the NSIS installation directory under \Examples\UserInfo\UserInfo.nsi.
# name installer OutFile "installer.exe" # default section start Section # call UserInfo plugin to get user info. The plugin puts the result in the stack UserInfo::GetAccountType # pop the result from the stack into $0 Pop $0 # compare the result with the string "Admin" to see if the user is admin. # If match, jump 3 lines down. StrCmp $0 "Admin" +3 # if there is not a match, print message and return MessageBox MB_OK "not admin: $0" Return # otherwise, confirm and return MessageBox MB_OK "is admin" # default section end SectionEnd