Minor neverball.nsi + Makefile.mingw clean-up.
[neverball] / scripts / neverball.nsi
1 #------------------------------------------------------------------------------
2
3 !include "LogicLib.nsh"
4
5 #------------------------------------------------------------------------------
6
7 !ifndef VERSION
8 !define VERSION "unknown"
9 !endif
10
11 !ifndef OUTFILE
12 !define OUTFILE "../neverball-${VERSION}-setup.exe"
13 !endif
14
15 !define UNINSTALL_REG_ROOT \
16     "Software\Microsoft\Windows\CurrentVersion\Uninstall\Neverball"
17
18 #------------------------------------------------------------------------------
19
20 OutFile ${OUTFILE}
21 Name "Neverball ${VERSION}"
22 LicenseData "COPYING.txt"
23 InstallDir "$PROGRAMFILES\Neverball"
24
25 XPStyle on
26
27 #------------------------------------------------------------------------------
28
29 Page license
30 Page components
31 Page directory
32 Page instfiles
33
34 Function .onInit
35     Call IsUserAdmin
36     Pop $R0
37
38     ${If} $R0 == "true"
39         SetShellVarContext all
40     ${EndIf}
41 FunctionEnd
42
43 Section "Neverball/Neverputt"
44     SectionIn RO
45
46     SetOutPath $INSTDIR
47
48     File *.txt
49     File /oname=AUTHORS.txt doc\AUTHORS.txt
50     File /oname=MANUAL.txt doc\MANUAL.txt
51
52     File /r /x .svn /x *.map /x obj data
53     File /r locale
54
55     File neverball.exe neverputt.exe *.dll
56
57     File /oname=data\icon\neverball.ico dist\newneverball.ico
58     File /oname=data\icon\neverputt.ico dist\newneverputt.ico
59
60     WriteUninstaller $INSTDIR\uninstall.exe
61
62
63     # http://nsis.sourceforge.net/Add_uninstall_information_to_Add/Remove_Programs
64
65     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
66         "DisplayName" "Neverball ${VERSION}"
67     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
68         "DisplayVersion" "${VERSION}"
69     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
70         "DisplayIcon" "$INSTDIR\data\icon\neverball.ico"
71     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
72         "UninstallString" "$INSTDIR\uninstall.exe"
73     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
74         "URLInfoAbout" "http://www.neverball.org/"
75     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
76         "URLUpdateInfo" "http://www.neverball.org/"
77     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
78         "HelpLink" "http://www.nevercorner.net/"
79     WriteRegDWORD SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
80         "NoModify" 1
81     WriteRegDWORD SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
82         "NoRepair" 1
83 SectionEnd
84
85 Section "Mapping tools (compiler, maps, ...)"
86     SetOutPath $INSTDIR
87
88     File mapc.exe
89
90     SetOutPath "$INSTDIR\data"
91
92     File /r /x ".svn" data\*.map
93     File /r /x ".svn" data\obj
94 SectionEnd
95
96 SectionGroup "Create shortcuts"
97     Section "In Start menu"
98         # Reset to get a proper working directory for short-cuts
99         SetOutPath $INSTDIR
100     
101         CreateDirectory "$SMPROGRAMS\Games"
102     
103         CreateShortcut \
104             "$SMPROGRAMS\Games\Neverball.lnk" \
105             "$INSTDIR\neverball.exe" ""       \
106             "$INSTDIR\data\icon\neverball.ico"
107     
108         CreateShortcut \
109             "$SMPROGRAMS\Games\Neverputt.lnk" \
110             "$INSTDIR\neverputt.exe" ""       \
111             "$INSTDIR\data\icon\neverputt.ico"
112     SectionEnd
113
114     Section "On desktop"
115         # Reset to get a proper working directory for short-cuts
116         SetOutPath $INSTDIR
117     
118         CreateShortcut \
119             "$DESKTOP\Neverball.lnk"          \
120             "$INSTDIR\neverball.exe" ""       \
121             "$INSTDIR\data\icon\neverball.ico"
122     
123         CreateShortcut \
124             "$DESKTOP\Neverputt.lnk"          \
125             "$INSTDIR\neverputt.exe" ""       \
126             "$INSTDIR\data\icon\neverputt.ico"
127     SectionEnd
128 SectionGroupEnd
129
130 #------------------------------------------------------------------------------
131
132 UninstPage uninstConfirm
133 UninstPage instfiles
134
135 Function un.onInit
136     Call un.IsUserAdmin
137     Pop $R0
138
139     ${If} $R0 == "true"
140         SetShellVarContext all
141     ${EndIf}
142 FunctionEnd
143
144 Section "Uninstall"
145     Delete "$SMPROGRAMS\Games\Neverball.lnk"
146     Delete "$SMPROGRAMS\Games\Neverputt.lnk"
147     RMDir  "$SMPROGRAMS\Games"
148     Delete "$DESKTOP\Neverball.lnk"
149     Delete "$DESKTOP\Neverputt.lnk"
150
151     DeleteRegKey SHELL_CONTEXT ${UNINSTALL_REG_ROOT}
152
153     # FIXME:  unsafe if the directory contains other-than-installed stuff
154     RMDir /r $INSTDIR
155 SectionEnd
156
157 #------------------------------------------------------------------------------
158
159 # URL:    http://nsis.sourceforge.net/IsUserAdmin
160 # Author: Lilla (lilla@earthlink.net) 2003-06-13
161
162 !macro IsUserAdmin un
163 Function ${un}IsUserAdmin
164     Push $R0
165     Push $R1
166     Push $R2
167  
168     ClearErrors
169     UserInfo::GetName
170     IfErrors Win9x
171     Pop $R1
172     UserInfo::GetAccountType
173     Pop $R2
174  
175     StrCmp $R2 "Admin" 0 Continue
176     StrCpy $R0 "true"
177     Goto Done
178  
179     Continue:
180         StrCmp $R2 "" Win9x
181         StrCpy $R0 "false"
182         Goto Done
183  
184     Win9x:
185         StrCpy $R0 "true"
186  
187     Done:
188
189     Pop $R2
190     Pop $R1
191     Exch $R0
192 FunctionEnd
193 !macroend
194
195 !insertmacro IsUserAdmin ""
196 !insertmacro IsUserAdmin "un."
197
198 #------------------------------------------------------------------------------
199
200 # vim:sts=4:sw=4:et:nowrap: