New NSIS script
[nasm.git] / nasm2.nsi
blob65fcce99bce2907f8d17f304580fe5f44325c280
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)
6 # All rights reserved.
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 VERSION "${__NASM_VER__}"
33 !define PACKAGE_NAME "${PRODUCT_NAME} ${VERSION}"
34 !define PACKAGE_SHORT_NAME "${PRODUCT_SHORT_NAME}-${VERSION}"
36 !define MULTIUSER_EXECUTIONLEVEL Highest
37 !define MULTIUSER_MUI
38 !define MULTIUSER_INSTALLMODE_COMMANDLINE
39 !define MULTIUSER_INSTALLMODE_INSTDIR "${PRODUCT_SHORT_NAME}"
40 !include MultiUser.nsh
42 !insertmacro MULTIUSER_PAGE_INSTALLMODE
43 !insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
45 ;--------------------------------
46 ;General
48 ;Name and file
49 Name "${PACKAGE_NAME}"
50 OutFile "${PACKAGE_NAME}-mui-installer.exe"
52 ;Get installation folder from registry if available
53 InstallDirRegKey HKCU "Software\${PRODUCT_SHORT_NAME}" ""
55 ;Request application privileges for Windows Vista
56 RequestExecutionLevel user
58 ;--------------------------------
59 ;Variables
61 Var StartMenuFolder
62 Var CmdFailed
64 ;--------------------------------
65 ;Interface Settings
66 Caption "${PACKAGE_SHORT_NAME} installation"
67 Icon "nsis\nasm.ico"
68 UninstallIcon "nsis\nasm-un.ico"
70 !define MUI_ABORTWARNING
72 ;--------------------------------
73 ;Pages
75 !insertmacro MUI_PAGE_COMPONENTS
76 !insertmacro MUI_PAGE_DIRECTORY
78 ;Start Menu Folder Page Configuration
79 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
80 !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\${PRODUCT_SHORT_NAME}"
81 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_SHORT_NAME}"
83 !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
85 !insertmacro MUI_PAGE_INSTFILES
87 !insertmacro MUI_UNPAGE_CONFIRM
88 !insertmacro MUI_UNPAGE_INSTFILES
90 ;--------------------------------
91 ;Installer Sections
93 !insertmacro MUI_LANGUAGE English
95 Section "NASM" SecNasm
96 Sectionin RO
97 SetOutPath "$INSTDIR"
98 File "nasm.exe"
99 File "LICENSE"
100 File "nasm.exe"
101 File "ndisasm.exe"
102 File "nsis\nasm.ico"
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
111 ; the bat we need
112 StrCpy $CmdFailed "true"
113 FileOpen $0 "nasmpath.bat" w
114 IfErrors skip
115 StrCpy $CmdFailed "false"
116 FileWrite $0 "@set path=$INSTDIR;%path%$\r$\n"
117 FileWrite $0 "@%comspec%"
118 FileClose $0
119 CreateShortCut "$DESKTOP\${PRODUCT_SHORT_NAME}.lnk" "$INSTDIR\nasmpath.bat" "" "$INSTDIR\nasm.ico" 0
120 skip:
121 ;Create uninstaller
122 WriteUninstaller "$INSTDIR\Uninstall.exe"
124 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
126 ;Create shortcuts
127 CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
128 StrCmp $CmdFailed "true" +2
129 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${PRODUCT_SHORT_NAME}-shell.lnk" "$INSTDIR\nasmpath.bat"
130 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${PRODUCT_SHORT_NAME}.lnk" "$INSTDIR\nasm.exe" "" "$INSTDIR\nasm.ico" 0
131 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
133 !insertmacro MUI_STARTMENU_WRITE_END
134 SectionEnd
136 Section "RDOFF" SecRdoff
137 CreateDirectory "$INSTDIR\rdoff"
138 SetOutPath "$INSTDIR\rdoff"
139 File "rdoff\ldrdf.exe"
140 File "rdoff\rdf2bin.exe"
141 File "rdoff\rdf2com.exe"
142 File "rdoff\rdf2ith.exe"
143 File "rdoff\rdf2ihx.exe"
144 File "rdoff\rdf2srec.exe"
145 File "rdoff\rdfdump.exe"
146 File "rdoff\rdflib.exe"
147 File "rdoff\rdx.exe"
148 SectionEnd
150 Section "Manual" SecManual
151 SetOutPath "$INSTDIR"
152 File "doc\nasmdoc.pdf"
153 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Manual.lnk" "$INSTDIR\manual.pdf"
154 SectionEnd
156 ;--------------------------------
157 ;Descriptions
159 ;Language strings
160 LangString DESC_SecNasm ${LANG_ENGLISH} "NASM assembler and disassember modules"
161 LangString DESC_SecManual ${LANG_ENGLISH} "Complete NASM manual (pdf file)"
162 LangString DESC_SecRdoff ${LANG_ENGLISH} "RDOFF utilities (you may not need it if you don't know what is it)"
164 ;Assign language strings to sections
165 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
166 !insertmacro MUI_DESCRIPTION_TEXT ${SecNasm} $(DESC_SecNasm)
167 !insertmacro MUI_DESCRIPTION_TEXT ${SecRdoff} $(DESC_SecRdoff)
168 !insertmacro MUI_DESCRIPTION_TEXT ${SecManual} $(DESC_SecManual)
169 !insertmacro MUI_FUNCTION_DESCRIPTION_END
171 ;--------------------------------
172 ;Uninstaller Section
174 Section "Uninstall"
176 ; files on HDD
177 Delete /rebootok "$INSTDIR\rdoff\*"
178 RMDir "$INSTDIR\rdoff"
179 Delete /rebootok "$INSTDIR\doc\*"
180 RMDir "$INSTDIR\doc"
181 Delete /rebootok "$INSTDIR\*"
182 RMDir "$INSTDIR"
183 Delete /rebootok "$DESKTOP\${PRODUCT_SHORT_NAME}.lnk"
185 ; Start Menu folder
186 ReadRegStr $0 HKCU Software\${PRODUCT_SHORT_NAME} "lnk"
187 Delete /rebootok "$0\*"
188 RMDir "$0"
189 DeleteRegKey /ifempty HKCU "Software\${PRODUCT_SHORT_NAME}"
190 SectionEnd
193 ; MUI requires this hooks
194 Function .onInit
195 !insertmacro MULTIUSER_INIT
196 FunctionEnd
198 Function un.onInit
199 !insertmacro MULTIUSER_UNINIT
200 FunctionEnd