Fix regular expression at doc/rdsrc.pl
[platform/upstream/nasm.git] / nasm.nsi
1 #!Nsis Installer Command Script
2
3 #
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.
7 #
8 # The script requires NSIS v2.45 (or any later)
9 #
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.
17 #
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.
28
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}"
34
35 SetCompressor lzma
36
37 !define MULTIUSER_EXECUTIONLEVEL Highest
38 !define MULTIUSER_MUI
39 !define MULTIUSER_INSTALLMODE_COMMANDLINE
40 !define MULTIUSER_INSTALLMODE_INSTDIR "${PRODUCT_SHORT_NAME}"
41 !include MultiUser.nsh
42
43 !insertmacro MULTIUSER_PAGE_INSTALLMODE
44 !insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
45
46 ;--------------------------------
47 ;General
48
49 ;Name and file
50 Name "${PACKAGE_NAME}"
51 OutFile "${PACKAGE_SHORT_NAME}-installer.exe"
52
53 ;Get installation folder from registry if available
54 InstallDirRegKey HKCU "Software\${PRODUCT_SHORT_NAME}" ""
55
56 ;Request application privileges for Windows Vista
57 RequestExecutionLevel user
58
59 ;--------------------------------
60 ;Variables
61
62 Var StartMenuFolder
63 Var CmdFailed
64
65 ;--------------------------------
66 ;Interface Settings
67 Caption "${PACKAGE_SHORT_NAME} installation"
68 Icon "nsis/nasm.ico"
69 UninstallIcon "nsis/nasm-un.ico"
70
71 !define MUI_ABORTWARNING
72
73 ;--------------------------------
74 ;Pages
75
76 !insertmacro MUI_PAGE_COMPONENTS
77 !insertmacro MUI_PAGE_DIRECTORY
78
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}"
83
84 !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
85
86 !insertmacro MUI_PAGE_INSTFILES
87
88 !insertmacro MUI_UNPAGE_CONFIRM
89 !insertmacro MUI_UNPAGE_INSTFILES
90
91 ;--------------------------------
92 ;Installer Sections
93
94 !insertmacro MUI_LANGUAGE English
95
96 Section "NASM" SecNasm
97     Sectionin RO
98     SetOutPath "$INSTDIR"
99     File "LICENSE"
100     File "nasm.exe"
101     File "ndisasm.exe"
102     File "nsis/nasm.ico"
103
104     ;Store installation folder
105     WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}" "" $INSTDIR
106
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
110
111     ;
112     ; the bat we need
113     StrCpy $CmdFailed "true"
114     FileOpen $0 "nasmpath.bat" w
115     IfErrors skip
116     StrCpy $CmdFailed "false"
117     FileWrite $0 "@set path=$INSTDIR;%path%$\r$\n"
118     FileWrite $0 "@%comspec%"
119     FileClose $0
120     CreateShortCut "$DESKTOP\${PRODUCT_SHORT_NAME}.lnk" "$INSTDIR\nasmpath.bat" "" "$INSTDIR\nasm.ico" 0
121 skip:
122     ;Create uninstaller
123     WriteUninstaller "$INSTDIR\Uninstall.exe"
124
125     !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
126
127     ;Create shortcuts
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"
133
134     !insertmacro MUI_STARTMENU_WRITE_END
135 SectionEnd
136
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"
148     File "rdoff/rdx.exe"
149 SectionEnd
150
151 Section "Manual" SecManual
152     SetOutPath "$INSTDIR"
153     File "doc/nasmdoc.pdf"
154     CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Manual.lnk" "$INSTDIR\nasmdoc.pdf"
155 SectionEnd
156
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"
162 SectionEnd
163
164 ;--------------------------------
165 ;Descriptions
166
167     ;Language strings
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)"
172
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
180
181 ;--------------------------------
182 ;Uninstaller Section
183
184 Section "Uninstall"
185     ;
186     ; files on HDD
187     IfFileExists "$INSTDIR" +3 +1
188         MessageBox MB_OK "No files found, aborting."
189         Abort
190         MessageBox MB_YESNO "The following directory will be deleted$\n$INSTDIR" IDYES rm_instdir_true IDNO rm_instdir_false
191         rm_instdir_true:
192             RMDir /r /rebootok "$INSTDIR"
193         rm_instdir_false:
194
195     ;
196     ; Desktop link
197     ReadRegStr $0 HKCU Software\${PRODUCT_SHORT_NAME} "bat-lnk"
198     StrCmp $0 0 +1 +3
199         MessageBox MB_OK "Invalid path to a bat-lnk file, aborting"
200         Abort
201     IfFileExists $0 +3 +1
202         MessageBox MB_OK "No bat-lnk files found, aborting."
203         Abort
204         MessageBox MB_YESNO "The following file will be deleted$\n$0" IDYES rm_batlinks_true IDNO rm_batlinks_false
205         rm_batlinks_true:
206             Delete /rebootok "$0"
207             RMDir "$0"
208         rm_batlinks_false:
209
210     ;
211     ; Start menu folder
212     ReadRegStr $0 HKCU Software\${PRODUCT_SHORT_NAME} "lnk"
213     StrCmp $0 0 +1 +3
214         MessageBox MB_OK "Invalid path to a lnk file, aborting"
215         Abort
216     IfFileExists $0 +3 +1
217         MessageBox MB_OK "No lnk files found, aborting."
218         Abort
219         MessageBox MB_YESNO "The following directory will be deleted$\n$0" IDYES rm_links_true IDNO rm_links_false
220         rm_links_true:
221             Delete /rebootok "$0\*"
222             RMDir "$0"
223         rm_links_false:
224     DeleteRegKey /ifempty HKCU "Software\${PRODUCT_SHORT_NAME}"
225 SectionEnd
226
227 ;
228 ; MUI requires this hooks
229 Function .onInit
230     !insertmacro MULTIUSER_INIT
231 FunctionEnd
232
233 Function un.onInit
234     !insertmacro MULTIUSER_UNINIT
235 FunctionEnd