1 #!Nsis Installer Command Script
4 # Copyright (c) 2009, Shao Miller (shao.miller@yrdsb.edu.on.ca)
5 # Copyright (c) 2009, Cyrill Gorcunov (gorcunov@gmail.com)
8 # The script requires NSIS v2.45 (or any later)
10 # Redistribution and use in source and binary forms, with or without
11 # modification, are permitted provided that the following conditions are met:
12 # * Redistributions of source code must retain the above copyright
13 # notice, this list of conditions and the following disclaimer.
14 # * Redistributions in binary form must reproduce the above copyright
15 # notice, this list of conditions and the following disclaimer in the
16 # documentation and/or other materials provided with the distribution.
18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 # ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR
22 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 !include "version.nsh"
30 !define PRODUCT_NAME
"Netwide Assembler"
31 !define PRODUCT_SHORT_NAME
"nasm"
32 !define PACKAGE_NAME
"${PRODUCT_NAME} ${VERSION}"
33 !define PACKAGE_SHORT_NAME
"${PRODUCT_SHORT_NAME}-${VERSION}"
37 !define MULTIUSER_EXECUTIONLEVEL Highest
39 !define MULTIUSER_INSTALLMODE_COMMANDLINE
40 !define MULTIUSER_INSTALLMODE_INSTDIR
"${PRODUCT_SHORT_NAME}"
41 !include MultiUser
.nsh
43 !insertmacro MULTIUSER_PAGE_INSTALLMODE
44 !insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
46 ;--------------------------------
50 Name "${PACKAGE_NAME}"
51 OutFile "${PACKAGE_SHORT_NAME}-installer.exe"
53 ;Get installation folder from registry if available
54 InstallDirRegKey HKCU "Software\${PRODUCT_SHORT_NAME}" ""
56 ;Request application privileges for Windows Vista
57 RequestExecutionLevel user
59 ;--------------------------------
65 ;--------------------------------
67 Caption "${PACKAGE_SHORT_NAME} installation"
69 UninstallIcon "nsis/nasm-un.ico"
71 !define MUI_ABORTWARNING
73 ;--------------------------------
76 !insertmacro MUI_PAGE_COMPONENTS
77 !insertmacro MUI_PAGE_DIRECTORY
79 ;Start Menu Folder Page Configuration
80 !define MUI_STARTMENUPAGE_REGISTRY_ROOT
"HKCU"
81 !define MUI_STARTMENUPAGE_REGISTRY_KEY
"Software\${PRODUCT_SHORT_NAME}"
82 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME
"${PRODUCT_SHORT_NAME}"
84 !insertmacro MUI_PAGE_STARTMENU Application
$StartMenuFolder
86 !insertmacro MUI_PAGE_INSTFILES
88 !insertmacro MUI_UNPAGE_CONFIRM
89 !insertmacro MUI_UNPAGE_INSTFILES
91 ;--------------------------------
94 !insertmacro MUI_LANGUAGE English
96 Section "NASM" SecNasm
104 ;Store installation folder
105 WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}" "" $INSTDIR
107 ;Store shortcuts folder
108 WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}\" "lnk" $SMPROGRAMS\
$StartMenuFolder
109 WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}\" "bat-lnk" $DESKTOP\
${PRODUCT_SHORT_NAME}.lnk
113 StrCpy $CmdFailed "true"
114 FileOpen $0 "nasmpath.bat" w
116 StrCpy $CmdFailed "false"
117 FileWrite $0 "@set path=$INSTDIR;%path%$\r$\n"
118 FileWrite $0 "@%comspec%"
120 CreateShortCut "$DESKTOP\${PRODUCT_SHORT_NAME}.lnk" "$INSTDIR\nasmpath.bat" "" "$INSTDIR\nasm.ico" 0
123 WriteUninstaller "$INSTDIR\Uninstall.exe"
125 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
128 CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
129 StrCmp $CmdFailed "true" +2
130 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${PRODUCT_SHORT_NAME}-shell.lnk" "$INSTDIR\nasmpath.bat"
131 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${PRODUCT_SHORT_NAME}.lnk" "$INSTDIR\nasm.exe" "" "$INSTDIR\nasm.ico" 0
132 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
134 !insertmacro MUI_STARTMENU_WRITE_END
137 Section "RDOFF" SecRdoff
138 CreateDirectory "$INSTDIR\rdoff"
139 SetOutPath "$INSTDIR\rdoff"
140 File "rdoff/ldrdf.exe"
141 File "rdoff/rdf2bin.exe"
142 File "rdoff/rdf2com.exe"
143 File "rdoff/rdf2ith.exe"
144 File "rdoff/rdf2ihx.exe"
145 File "rdoff/rdf2srec.exe"
146 File "rdoff/rdfdump.exe"
147 File "rdoff/rdflib.exe"
151 Section "Manual" SecManual
152 SetOutPath "$INSTDIR"
153 File "doc/nasmdoc.pdf"
154 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Manual.lnk" "$INSTDIR\nasmdoc.pdf"
157 Section "VS8 integration" SecVS8
158 CreateDirectory "$INSTDIR\contrib\VSrules"
159 SetOutPath "$INSTDIR\contrib\VSrules"
160 File "contrib/VSrules/nasm.README"
161 File "contrib/VSrules/nasm.rules"
164 ;--------------------------------
168 LangString DESC_SecNasm
${LANG_ENGLISH} "NASM assembler and disassember modules"
169 LangString DESC_SecManual
${LANG_ENGLISH} "Complete NASM manual (pdf file)"
170 LangString DESC_SecRdoff
${LANG_ENGLISH} "RDOFF utilities (you may not need it if you don't know what is it)"
171 LangString DESC_SecVS8
${LANG_ENGLISH} "Visual Studio 2008 NASM integration (rules file)"
173 ;Assign language strings to sections
174 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
175 !insertmacro MUI_DESCRIPTION_TEXT
${SecNasm} $(DESC_SecNasm
)
176 !insertmacro MUI_DESCRIPTION_TEXT
${SecRdoff} $(DESC_SecRdoff
)
177 !insertmacro MUI_DESCRIPTION_TEXT
${SecManual} $(DESC_SecManual
)
178 !insertmacro MUI_DESCRIPTION_TEXT
${SecVS8} $(DESC_SecVS8
)
179 !insertmacro MUI_FUNCTION_DESCRIPTION_END
181 ;--------------------------------
187 IfFileExists "$INSTDIR" +3 +1
188 MessageBox MB_OK "No files found, aborting."
190 MessageBox MB_YESNO "The following directory will be deleted$\n$INSTDIR" IDYES rm_instdir_true
IDNO rm_instdir_false
192 RMDir /r
/rebootok
"$INSTDIR"
197 ReadRegStr $0 HKCU Software\
${PRODUCT_SHORT_NAME} "bat-lnk"
199 MessageBox MB_OK "Invalid path to a bat-lnk file, aborting"
201 IfFileExists $0 +3 +1
202 MessageBox MB_OK "No bat-lnk files found, aborting."
204 MessageBox MB_YESNO "The following file will be deleted$\n$0" IDYES rm_batlinks_true
IDNO rm_batlinks_false
206 Delete /rebootok
"$0"
212 ReadRegStr $0 HKCU Software\
${PRODUCT_SHORT_NAME} "lnk"
214 MessageBox MB_OK "Invalid path to a lnk file, aborting"
216 IfFileExists $0 +3 +1
217 MessageBox MB_OK "No lnk files found, aborting."
219 MessageBox MB_YESNO "The following directory will be deleted$\n$0" IDYES rm_links_true
IDNO rm_links_false
221 Delete /rebootok
"$0\*"
224 DeleteRegKey /ifempty
HKCU "Software\${PRODUCT_SHORT_NAME}"
228 ; MUI requires this hooks
230 !insertmacro MULTIUSER_INIT
234 !insertmacro MULTIUSER_UNINIT