Merged lockstep branch.
[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 SetCompressor /solid lzma
27 RequestExecutionLevel user
28
29 #------------------------------------------------------------------------------
30
31 Page license
32 Page components
33 Page directory
34 Page instfiles
35
36 Function .onInit
37     Call IsUserAdmin
38     Pop $R0
39
40     ${If} $R0 == "true"
41         SetShellVarContext all
42     ${EndIf}
43 FunctionEnd
44
45 Section "Neverball/Neverputt"
46     SectionIn RO
47
48     SetOutPath "$INSTDIR"
49
50     File *.txt doc\*.txt
51     File /r /x .svn /x *.map /x obj data
52     File /r locale
53
54     File neverball.exe neverputt.exe *.dll
55
56     File /oname=data\icon\neverball.ico dist\ico\neverball_basic_sizes.ico
57     File /oname=data\icon\neverputt.ico dist\ico\neverputt_basic_sizes.ico
58
59     CreateDirectory "$INSTDIR\bin"
60
61     SetOutPath "$INSTDIR\bin"
62
63     File scripts\neverball.bat
64     File scripts\neverputt.bat
65
66     # http://nsis.sourceforge.net/\
67     # Add_uninstall_information_to_Add/Remove_Programs
68
69     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
70         "DisplayName" "Neverball ${VERSION}"
71     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
72         "DisplayVersion" "${VERSION}"
73     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
74         "DisplayIcon" "$INSTDIR\data\icon\neverball.ico"
75     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
76         "UninstallString" "$INSTDIR\uninstall.exe"
77     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
78         "URLInfoAbout" "http://www.neverball.org/"
79     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
80         "URLUpdateInfo" "http://www.neverball.org/"
81     WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
82         "HelpLink" "http://www.nevercorner.net/"
83     WriteRegDWORD SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
84         "NoModify" 1
85     WriteRegDWORD SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
86         "NoRepair" 1
87
88     WriteUninstaller "$INSTDIR\uninstall.exe"
89 SectionEnd
90
91 Section "Mapping tools (compiler, maps, ...)"
92     SetOutPath "$INSTDIR"
93
94     File mapc.exe
95     File /oname=bin\mapc.bat scripts\mapc.bat
96
97     SetOutPath "$INSTDIR\data"
98
99     File /r /x ".svn" data\*.map
100     File /r /x ".svn" data\obj
101 SectionEnd
102
103 SectionGroup "Shortcuts"
104     Section "In Start menu"
105         # Reset to get a proper working directory
106         SetOutPath "$INSTDIR"
107     
108         CreateDirectory "$SMPROGRAMS\Neverball"
109     
110         CreateShortcut \
111             "$SMPROGRAMS\Neverball\Neverball.lnk" \
112             "$INSTDIR\neverball.exe" ""       \
113             "$INSTDIR\data\icon\neverball.ico"
114     
115         CreateShortcut \
116             "$SMPROGRAMS\Neverball\Neverputt.lnk" \
117             "$INSTDIR\neverputt.exe" ""       \
118             "$INSTDIR\data\icon\neverputt.ico"
119     SectionEnd
120
121     Section "On desktop"
122         # Reset to get a proper working directory
123         SetOutPath "$INSTDIR"
124     
125         CreateShortcut \
126             "$DESKTOP\Neverball.lnk"          \
127             "$INSTDIR\neverball.exe" ""       \
128             "$INSTDIR\data\icon\neverball.ico"
129     
130         CreateShortcut \
131             "$DESKTOP\Neverputt.lnk"          \
132             "$INSTDIR\neverputt.exe" ""       \
133             "$INSTDIR\data\icon\neverputt.ico"
134     SectionEnd
135 SectionGroupEnd
136
137 #------------------------------------------------------------------------------
138
139 UninstPage uninstConfirm
140 UninstPage instfiles
141
142 Function un.onInit
143     Call un.IsUserAdmin
144     Pop $R0
145
146     ${If} $R0 == "true"
147         SetShellVarContext all
148     ${EndIf}
149 FunctionEnd
150
151 Section "Uninstall"
152     Delete "$SMPROGRAMS\Neverball\Neverball.lnk"
153     Delete "$SMPROGRAMS\Neverball\Neverputt.lnk"
154     RMDir  "$SMPROGRAMS\Neverball"
155     Delete "$DESKTOP\Neverball.lnk"
156     Delete "$DESKTOP\Neverputt.lnk"
157
158     DeleteRegKey SHELL_CONTEXT ${UNINSTALL_REG_ROOT}
159
160     # FIXME:  unsafe if the directory contains other-than-installed stuff
161     RMDir /r $INSTDIR
162 SectionEnd
163
164 #------------------------------------------------------------------------------
165
166 # URL:    http://nsis.sourceforge.net/IsUserAdmin
167 # Author: Lilla (lilla@earthlink.net) 2003-06-13
168
169 !macro IsUserAdmin un
170 Function ${un}IsUserAdmin
171     Push $R0
172     Push $R1
173     Push $R2
174  
175     ClearErrors
176     UserInfo::GetName
177     IfErrors Win9x
178     Pop $R1
179     UserInfo::GetAccountType
180     Pop $R2
181  
182     StrCmp $R2 "Admin" 0 Continue
183     StrCpy $R0 "true"
184     Goto Done
185  
186     Continue:
187         StrCmp $R2 "" Win9x
188         StrCpy $R0 "false"
189         Goto Done
190  
191     Win9x:
192         StrCpy $R0 "true"
193  
194     Done:
195
196     Pop $R2
197     Pop $R1
198     Exch $R0
199 FunctionEnd
200 !macroend
201
202 !insertmacro IsUserAdmin ""
203 !insertmacro IsUserAdmin "un."
204
205 #------------------------------------------------------------------------------
206
207 # vim:sts=4:sw=4:et: