back to old path
[mono.git] / mcs / tools / mono-win32-setup.nsi
1 ; =====================================================\r
2 ; mono.nsi - Mono Setup wizard for windows\r
3 ; =====================================================\r
4 ;\r
5 ; (C) Copyright 2003 by Johannes Roith\r
6 ; (C) Copyright 2003 by Daniel Morgan\r
7 ;\r
8 ; Authors: \r
9 ;       Johannes Roith <johannes@jroith.de>\r
10 ;       Daniel Morgan <danmorg@sc.rr.com>\r
11 ;\r
12 ; This .nsi includes code from the NSIS Archives:\r
13 ; function StrReplace and VersionCheck \r
14 ; by Hendri Adriaens\r
15 ; HendriAdriaens@hotmail.com\r
16\r
17 ; =====================================================\r
18 ;\r
19 ; This script can build a binary setup wizard of mono.\r
20 ; It is released under the GNU GPL.\r
21 ;\r
22 ; =====================================================\r
23 ; SET MILESTONE & SOURCE DIR\r
24 ; =====================================================\r
25 ;\r
26 ;\r
27   !define MILESTONE "0.24" ;\r
28   !define SOURCE_INSTALL_DIR "c:\mono-0.23-setup\install\\*" ;\r
29 \r
30 ; =====================================================\r
31 ; SET LOGO\r
32 ; =====================================================\r
33 ;\r
34 ;  Beautification:\r
35 ;\r
36 ;  This adds a Mono-specific Image on the left\r
37 ;  You can choose between the light or dark one.\r
38 ;  \r
39 ;  If you wish no mono-specifi logo, please outcomment\r
40 ;  the lines.\r
41 ;  \r
42 ;  "light" is enabled.\r
43 ;\r
44 ;  !define MUI_SPECIALBITMAP "mono-win32-setup-dark.bmp"\r
45    !define MUI_SPECIALBITMAP "mono-win32-setup-light.bmp"\r
46 \r
47 ; =====================================================\r
48 ; BUILDING\r
49 ; =====================================================\r
50 ;\r
51 ; 1. Build mono. The install directory must not contain\r
52 ;    anything else - everything gets packed in!!!\r
53 ;\r
54 ; 2. In your install directory, delete the *.a files.\r
55 ;     Most people won't need them and it saves ~ 4 MB.\r
56 ;\r
57 ; 3. Get latest nsis from cvs or a development snapshot\r
58 ;    from http://nsis.sf.net\r
59 ;\r
60 ; 4. Adapt the MILESTONE\r
61 ;\r
62 ; 5. Adapt the SOURCE_INSTALL_DIR above to match your \r
63 ;     install directory. Do not remove \\* at the end!!\r
64 ;\r
65 ; 6. Open this script in makensisw.exe\r
66 ;\r
67 ; 7. The output file is mono-[MILESTONE]-win32-1.exe\r
68 ;\r
69 ;\r
70 ;\r
71 ;\r
72 ;\r
73 ; =====================================================\r
74 ; MONO & REGISTRY / DETECTING MONO\r
75 ; =====================================================\r
76 ;\r
77 ;\r
78 ; This setup creates several Registry Keys:\r
79 ;\r
80 ; HKEY_LOCAL_MACHINE SOFTWARE\Mono DefaultCLR\r
81 ; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} SdkInstallRoot\r
82 ; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} FrameworkAssemblyDirectory\r
83 ; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} MonoConfigDir\r
84 ;\r
85 ; =====================================================\r
86 ;\r
87 ; To get the current Mono Install Directory:\r
88 ;\r
89 ; 1. Get DefaultCLR\r
90 ; 2. Get HKEY_LOCAL_MACHINE SOFTWARE\Mono\$THE_DEFAULT_CLR_VALUE SdkInstallRoot\r
91 ;\r
92 ; =====================================================\r
93 ;\r
94 ; To get the current Mono assembly Directory:\r
95 ;\r
96 ; 1. Get DefaultCLR\r
97 ; 2. Get HKEY_LOCAL_MACHINE SOFTWARE\Mono\$THE_DEFAULT_CLR_VALUE FrameworkAssemblyDirectory\r
98\r
99 ; =====================================================\r
100 ; Do not edit below\r
101 ; =====================================================\r
102 ;\r
103 ;\r
104 ; =====================================================\r
105 ; GENERAL SETTING - NEED NOT TO BE CHANGED\r
106 ; =====================================================\r
107 \r
108  !define NAME "Mono" ;\r
109  !define TARGET_INSTALL_DIR "c:\mono-${MILESTONE}" ;\r
110  !define OUTFILE "mono-${MILESTONE}-win32-1.exe" ;\r
111 \r
112 ; =====================================================\r
113 ; SCRIPT\r
114 ; =====================================================\r
115 \r
116  !define MUI_PRODUCT "${NAME}"\r
117  !define MUI_VERSION "${MILESTONE}"\r
118  !define FULLNAME "${MUI_PRODUCT} ${MUI_VERSION}"\r
119  !define MUI_UI "${NSISDIR}\Contrib\UIs\modern2.exe"\r
120  !define MUI_ICON "${NSISDIR}\Contrib\Icons\setup.ico"\r
121  !define MUI_UNICON "${NSISDIR}\Contrib\Icons\normal-uninstall.ico"\r
122  !define MUI_WELCOMEPAGE\r
123  !define MUI_DIRECTORYPAGE\r
124  !define MUI_DIRECTORYSELECTIONPAGE\r
125  !include "${NSISDIR}\Contrib\Modern UI\System.nsh"\r
126  !insertmacro MUI_SYSTEM\r
127  !insertmacro MUI_LANGUAGE "ENGLISH"\r
128 \r
129 \r
130  OutFile "${OUTFILE}"\r
131  InstallDir "${TARGET_INSTALL_DIR}"\r
132 \r
133 \r
134 ;========================\r
135 ; Uninstaller\r
136 ;========================\r
137 \r
138 Section "Uninstall"\r
139 \r
140   MessageBox MB_YESNO "Are you sure you want to uninstall Mono from your system?" IDNO NoUnInstall\r
141 \r
142   Delete $INSTDIR\Uninst.exe ; delete Uninstaller\r
143   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} ; Remove Entry in Software List\r
144 \r
145   MessageBox MB_YESNO "Mono was installed into $INSTDIR. Should this directory be removed completly?" IDNO GoNext1\r
146   RMDir /r $INSTDIR\r
147   GoNext1:\r
148 \r
149   DeleteRegKey HKLM SOFTWARE\Mono\${MILESTONE}\r
150   MessageBox MB_YESNO "Mono ${MILESTONE} has been removed. Should the wrappers and the Mono registry key be removed also? This could disable other Mono installations as well, but will remove Mono ${MILESTONE} 100%." IDNO GoNext2\r
151 \r
152   ; Complete Uninstall\r
153 \r
154   DeleteRegKey HKLM SOFTWARE\Mono\r
155   Delete $WINDIR\monobasepath.bat\r
156   Delete $WINDIR\mcs.bat\r
157   Delete $WINDIR\mbas.bat\r
158   Delete $WINDIR\mint.bat\r
159   Delete $WINDIR\mono.bat\r
160   Delete $WINDIR\monodis.bat\r
161   Delete $WINDIR\monoilasm.bat\r
162   Delete $WINDIR\sqlsharp.bat\r
163   Delete $WINDIR\secutil.bat\r
164   Delete $WINDIR\cert2spc.bat\r
165   Delete $WINDIR\monoresgen.bat\r
166   Delete $WINDIR\monosn.bat\r
167   Delete $WINDIR\cilc.bat\r
168 \r
169   GoNext2:\r
170   NoUnInstall:\r
171 \r
172 SectionEnd\r
173 \r
174 \r
175  Section\r
176 \r
177  ; Warn people if a newer Mono is already installed\r
178 \r
179  ReadRegStr $0 HKEY_LOCAL_MACHINE SOFTWARE\Mono\ DefaultCLR\r
180  Push $0\r
181  Push ${MILESTONE} \r
182  Call VersionCheck\r
183  Pop $0\r
184  StrCmp $0 0 NoAskInstall\r
185  StrCmp $0 2 NoAskInstall\r
186  MessageBox MB_YESNO "A newer Mono version is already installed. Still continue?" IDNO NoInstall\r
187 \r
188  NoAskInstall:\r
189 \r
190  SetOutPath $INSTDIR\r
191  File /r "${SOURCE_INSTALL_DIR}"\r
192  WriteUninstaller Uninst.exe\r
193 \r
194  WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} SdkInstallRoot $INSTDIR\r
195  WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} FrameworkAssemblyDirectory $INSTDIR\lib\r
196  WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} MonoConfigDir $INSTDIR\etc\mono\r
197  ;WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} GtkSharpLibPath $INSTDIR\lib\r
198  WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono DefaultCLR ${MILESTONE}\r
199 \r
200  ; Mono Uninstall Entry in Windows Software List in the Control panel\r
201  WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} DisplayName "Mono ${MILESTONE}"\r
202  WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} UninstallString $INSTDIR\uninst.exe\r
203 \r
204  ;original string is like C:\mono-0.20\install\r
205  StrCpy $5 $INSTDIR \r
206  Push $5\r
207  Push "\" ;search for this string\r
208  Push "/" ;replace with this string\r
209  Call StrReplace\r
210  ;resulting string which is like C:/mono-0.20/install\r
211  Pop $6\r
212 \r
213 ;========================\r
214 ; Write the wrapper files\r
215 ;========================\r
216 \r
217 ; create bin/mono wrapper to be used if the user has cygwin\r
218 FileOpen $0 "$INSTDIR\bin\mono.exe.sh" "w"\r
219 FileWrite $0 "#!/bin/sh$\r$\n"
220 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
221 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
222 FileWrite $0 '$6/bin/mono.exe "$$@"'
223 FileClose $0\r
224 \r
225 ; create bin/mint wrapper to be used if the user has cygwin\r
226 FileOpen $0 "$INSTDIR\bin\mint.exe.sh" "w"\r
227 FileWrite $0 "#!/bin/sh$\r$\n"
228 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
229 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
230 FileWrite $0 '$6/bin/mint.exe "$$@"'
231 FileClose $0\r
232 \r
233 ; create bin/mcs wrapper to be used if the user has cygwin\r
234 FileOpen $0 "$INSTDIR\bin\mcs.exe.sh" "w"\r
235 FileWrite $0 "#!/bin/sh$\r$\n"
236 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
237 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
238 FileWrite $0 '$6/bin/mono.exe $6/bin/mcs.exe "$$@"'
239 FileClose $0\r
240 \r
241 ; create bin/mbas wrapper to be used if the user has cygwin\r
242 FileOpen $0 "$INSTDIR\bin\mbas.exe.sh" "w"\r
243 FileWrite $0 "#!/bin/sh$\r$\n"
244 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
245 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
246 FileWrite $0 '$6/bin/mono.exe $6/bin/mbas.exe "$$@"'
247 FileClose $0\r
248 \r
249 ; create bin/sqlsharp wrapper to be used if the user has cygwin\r
250 FileOpen $0 "$INSTDIR\bin\sqlsharp.exe.sh" "w"\r
251 FileWrite $0 "#!/bin/sh$\r$\n"
252 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
253 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
254 FileWrite $0 '$6/bin/mono.exe $6/bin/sqlsharp.exe "$$@"'
255 FileClose $0\r
256 \r
257 ; create bin/monodis wrapper to be used if the user has cygwin\r
258 FileOpen $0 "$INSTDIR\bin\monodis.exe.sh" "w"\r
259 FileWrite $0 "#!/bin/sh$\r$\n"
260 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
261 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
262 FileWrite $0 '$6/bin/mono.exe $6/bin/monodis.exe "$$@"'
263 FileClose $0\r
264 \r
265 ; create bin/monoresgen wrapper to be used if the user has cygwin\r
266 FileOpen $0 "$INSTDIR\bin\monoresgen.exe.sh" "w"\r
267 FileWrite $0 "#!/bin/sh$\r$\n"
268 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
269 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
270 FileWrite $0 '$6/bin/mono.exe $6/bin/monoresgen.exe "$$@"'
271 FileClose $0\r
272 \r
273 ; create bin/monoilasm wrapper to be used if the user has cygwin\r
274 FileOpen $0 "$INSTDIR\bin\monoilasm.exe.sh" "w"\r
275 FileWrite $0 "#!/bin/sh$\r$\n"
276 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
277 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
278 FileWrite $0 '$6/bin/mono.exe $6/bin/monoilasm.exe "$$@"'
279 FileClose $0\r
280 \r
281 ; create bin/monosn wrapper to be used if the user has cygwin\r
282 FileOpen $0 "$INSTDIR\bin\monosn.exe.sh" "w"\r
283 FileWrite $0 "#!/bin/sh$\r$\n"
284 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
285 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
286 FileWrite $0 '$6/bin/mono.exe $6/bin/monosn.exe "$$@"'
287 FileClose $0\r
288 \r
289 ; create bin/secutil wrapper to be used if the user has cygwin\r
290 FileOpen $0 "$INSTDIR\bin\secutil.exe.sh" "w"\r
291 FileWrite $0 "#!/bin/sh$\r$\n"
292 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
293 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
294 FileWrite $0 '$6/bin/mono.exe $6/bin/secutil.exe "$$@"'
295 FileClose $0\r
296 \r
297 ; create bin/cert2spc wrapper to be used if the user has cygwin\r
298 FileOpen $0 "$INSTDIR\bin\cert2spc.exe.sh" "w"\r
299 FileWrite $0 "#!/bin/sh$\r$\n"
300 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
301 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
302 FileWrite $0 '$6/bin/mono.exe $6/bin/cert2spc.exe "$$@"'
303 FileClose $0\r
304 \r
305 ; create bin/cilc wrapper to be used if the user has cygwin\r
306 FileOpen $0 "$INSTDIR\bin\cilc.exe.sh" "w"\r
307 FileWrite $0 "#!/bin/sh$\r$\n"
308 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
309 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
310 FileWrite $0 '$6/bin/mono.exe $6/bin/cilc.exe "$$@"'
311 FileClose $0\r
312 \r
313 ;\r
314 ; These wrappers are copied to the windows directory.\r
315 ;\r
316 \r
317 ;========================\r
318 ; Write the path file\r
319 ;========================\r
320 \r
321 FileOpen $0 "$WINDIR\monobasepath.bat" "w"\r
322 FileWrite $0 "set MONO_BASEPATH=$INSTDIR$\r$\n"\r
323 FileWrite $0 "set MONO_PATH=%MONO_BASEPATH%\lib$\r$\n"\r
324 FileWrite $0 "set MONO_CFG_DIR=%MONO_BASEPATH%\etc\mono"\r
325 FileClose $0\r
326 \r
327 \r
328 ;========================\r
329 ; Write the mcs file\r
330 ;========================\r
331 \r
332 FileOpen $0 "$WINDIR\mcs.bat" "w"\r
333 \r
334 FileWrite $0 "@echo off$\r$\n"\r
335 FileWrite $0 "call monobasepath.bat$\r$\n"\r
336 FileWrite $0 "set MONOARGS=$\r$\n"\r
337 FileWrite $0 ":loop$\r$\n"\r
338 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
339 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
340 FileWrite $0 "shift$\r$\n"\r
341 FileWrite $0 "goto loop$\r$\n"\r
342 FileWrite $0 ":done$\r$\n"\r
343 FileWrite $0 "setlocal$\r$\n"\r
344 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
345 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\mcs.exe %MONOARGS%$\r$\n"\r
346 FileWrite $0 "endlocal$\r$\n"\r
347 \r
348 FileClose $0\r
349 \r
350 ;========================\r
351 ; Write the mbas file\r
352 ;========================\r
353 \r
354 FileOpen $0 "$WINDIR\mbas.bat" "w"\r
355 \r
356 FileWrite $0 "@echo off$\r$\n"\r
357 FileWrite $0 "call monobasepath.bat$\r$\n"\r
358 FileWrite $0 "set MONOARGS=$\r$\n"\r
359 FileWrite $0 ":loop$\r$\n"\r
360 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
361 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
362 FileWrite $0 "shift$\r$\n"\r
363 FileWrite $0 "goto loop$\r$\n"\r
364 FileWrite $0 ":done$\r$\n"\r
365 FileWrite $0 "setlocal$\r$\n"\r
366 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
367 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\mbas.exe %MONOARGS%$\r$\n"\r
368 FileWrite $0 "endlocal$\r$\n"\r
369 \r
370 FileClose $0\r
371 \r
372 ;========================\r
373 ; Write the mint file\r
374 ;========================\r
375 \r
376 FileOpen $0 "$WINDIR\mint.bat" "w"\r
377 \r
378 FileWrite $0 "@echo off$\r$\n"\r
379 FileWrite $0 "call monobasepath.bat$\r$\n"\r
380 FileWrite $0 "set MONOARGS=$\r$\n"\r
381 FileWrite $0 ":loop$\r$\n"\r
382 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
383 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
384 FileWrite $0 "shift$\r$\n"\r
385 FileWrite $0 "goto loop$\r$\n"\r
386 FileWrite $0 ":done$\r$\n"\r
387 FileWrite $0 "setlocal$\r$\n"\r
388 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
389 FileWrite $0 "%MONO_BASEPATH%\bin\mint.exe %MONOARGS%$\r$\n"\r
390 FileWrite $0 "endlocal$\r$\n"\r
391 \r
392 FileClose $0\r
393 \r
394 ;========================\r
395 ; Write the mono file\r
396 ;========================\r
397 \r
398 FileOpen $0 "$WINDIR\mono.bat" "w"\r
399 \r
400 FileWrite $0 "@echo off$\r$\n"\r
401 FileWrite $0 "call monobasepath.bat$\r$\n"\r
402 FileWrite $0 "set MONOARGS=$\r$\n"\r
403 FileWrite $0 ":loop$\r$\n"\r
404 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
405 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
406 FileWrite $0 "shift$\r$\n"\r
407 FileWrite $0 "goto loop$\r$\n"\r
408 FileWrite $0 ":done$\r$\n"\r
409 FileWrite $0 "setlocal$\r$\n"\r
410 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
411 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONOARGS%$\r$\n"\r
412 FileWrite $0 "endlocal$\r$\n"\r
413 \r
414 FileClose $0\r
415 \r
416 ;========================\r
417 ; Write monodis\r
418 ;========================\r
419 \r
420 FileOpen $0 "$WINDIR\monodis.bat" "w"\r
421 \r
422 FileWrite $0 "@echo off$\r$\n"\r
423 FileWrite $0 "call monobasepath.bat$\r$\n"\r
424 FileWrite $0 "set MONOARGS=$\r$\n"\r
425 FileWrite $0 ":loop$\r$\n"\r
426 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
427 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
428 FileWrite $0 "shift$\r$\n"\r
429 FileWrite $0 "goto loop$\r$\n"\r
430 FileWrite $0 ":done$\r$\n"\r
431 FileWrite $0 "setlocal$\r$\n"\r
432 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
433 FileWrite $0 "%MONO_BASEPATH%\bin\monodis.exe %MONOARGS%$\r$\n"\r
434 FileWrite $0 "endlocal$\r$\n"\r
435 \r
436 FileClose $0\r
437 \r
438 ;========================\r
439 ; Write monoilasm\r
440 ;========================\r
441 \r
442 FileOpen $0 "$WINDIR\monoilasm.bat" "w"\r
443 \r
444 FileWrite $0 "@echo off$\r$\n"\r
445 FileWrite $0 "call monobasepath.bat$\r$\n"\r
446 FileWrite $0 "set MONOARGS=$\r$\n"\r
447 FileWrite $0 ":loop$\r$\n"\r
448 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
449 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
450 FileWrite $0 "shift$\r$\n"\r
451 FileWrite $0 "goto loop$\r$\n"\r
452 FileWrite $0 ":done$\r$\n"\r
453 FileWrite $0 "setlocal$\r$\n"\r
454 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
455 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\monoilasm.exe %MONOARGS%$\r$\n"\r
456 FileWrite $0 "endlocal$\r$\n"\r
457 \r
458 FileClose $0\r
459 \r
460 \r
461 ;========================\r
462 ; Write the sqlsharp file\r
463 ;========================\r
464 \r
465 FileOpen $0 "$WINDIR\sqlsharp.bat" "w"\r
466 \r
467 FileWrite $0 "@echo off$\r$\n"\r
468 FileWrite $0 "call monobasepath.bat$\r$\n"\r
469 FileWrite $0 "set MONOARGS=$\r$\n"\r
470 FileWrite $0 ":loop$\r$\n"\r
471 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
472 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
473 FileWrite $0 "shift$\r$\n"\r
474 FileWrite $0 "goto loop$\r$\n"\r
475 FileWrite $0 ":done$\r$\n"\r
476 FileWrite $0 "setlocal$\r$\n"\r
477 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
478 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\sqlsharp.exe %MONOARGS%$\r$\n"\r
479 FileWrite $0 "endlocal$\r$\n"\r
480 \r
481 FileClose $0\r
482 \r
483 ;========================\r
484 ; Write the secutil file\r
485 ;========================\r
486 \r
487 FileOpen $0 "$WINDIR\secutil.bat" "w"\r
488 \r
489 FileWrite $0 "@echo off$\r$\n"\r
490 FileWrite $0 "call monobasepath.bat$\r$\n"\r
491 FileWrite $0 "set MONOARGS=$\r$\n"\r
492 FileWrite $0 ":loop$\r$\n"\r
493 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
494 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
495 FileWrite $0 "shift$\r$\n"\r
496 FileWrite $0 "goto loop$\r$\n"\r
497 FileWrite $0 ":done$\r$\n"\r
498 FileWrite $0 "setlocal$\r$\n"\r
499 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
500 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\secutil.exe %MONOARGS%$\r$\n"\r
501 FileWrite $0 "endlocal$\r$\n"\r
502 \r
503 FileClose $0\r
504 \r
505 ;========================\r
506 ; Write the cert2spc file\r
507 ;========================\r
508 \r
509 FileOpen $0 "$WINDIR\cert2spc.bat" "w"\r
510 \r
511 FileWrite $0 "@echo off$\r$\n"\r
512 FileWrite $0 "call monobasepath.bat$\r$\n"\r
513 FileWrite $0 "set MONOARGS=$\r$\n"\r
514 FileWrite $0 ":loop$\r$\n"\r
515 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
516 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
517 FileWrite $0 "shift$\r$\n"\r
518 FileWrite $0 "goto loop$\r$\n"\r
519 FileWrite $0 ":done$\r$\n"\r
520 FileWrite $0 "setlocal$\r$\n"\r
521 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
522 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\cert2spc.exe %MONOARGS%$\r$\n"\r
523 FileWrite $0 "endlocal$\r$\n"\r
524 \r
525 FileClose $0\r
526 \r
527 \r
528 ;========================\r
529 ; Write the monoresgen file\r
530 ;========================\r
531 \r
532 FileOpen $0 "$WINDIR\monoresgen.bat" "w"\r
533 \r
534 FileWrite $0 "@echo off$\r$\n"\r
535 FileWrite $0 "call monobasepath.bat$\r$\n"\r
536 FileWrite $0 "set MONOARGS=$\r$\n"\r
537 FileWrite $0 ":loop$\r$\n"\r
538 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
539 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
540 FileWrite $0 "shift$\r$\n"\r
541 FileWrite $0 "goto loop$\r$\n"\r
542 FileWrite $0 ":done$\r$\n"\r
543 FileWrite $0 "setlocal$\r$\n"\r
544 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
545 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\monoresgen.exe %MONOARGS%$\r$\n"\r
546 FileWrite $0 "endlocal$\r$\n"\r
547 \r
548 FileClose $0\r
549 \r
550 ;========================\r
551 ; Write the monosn file\r
552 ;========================\r
553 \r
554 FileOpen $0 "$WINDIR\monosn.bat" "w"\r
555 \r
556 FileWrite $0 "@echo off$\r$\n"\r
557 FileWrite $0 "call monobasepath.bat$\r$\n"\r
558 FileWrite $0 "set MONOARGS=$\r$\n"\r
559 FileWrite $0 ":loop$\r$\n"\r
560 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
561 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
562 FileWrite $0 "shift$\r$\n"\r
563 FileWrite $0 "goto loop$\r$\n"\r
564 FileWrite $0 ":done$\r$\n"\r
565 FileWrite $0 "setlocal$\r$\n"\r
566 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
567 FileWrite $0 "%MONO_BASEPATH%\bin\monosn.exe %MONOARGS%$\r$\n"\r
568 FileWrite $0 "endlocal$\r$\n"\r
569 \r
570 FileClose $0\r
571 \r
572 ;========================\r
573 ; Write the cilc file\r
574 ;========================\r
575 \r
576 FileOpen $0 "$WINDIR\cilc.bat" "w"\r
577 \r
578 \r
579 FileWrite $0 "@echo off$\r$\n"\r
580 FileWrite $0 "call monobasepath.bat$\r$\n"\r
581 FileWrite $0 "set MONOARGS=$\r$\n"\r
582 FileWrite $0 ":loop$\r$\n"\r
583 FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
584 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
585 FileWrite $0 "shift$\r$\n"\r
586 FileWrite $0 "goto loop$\r$\n"\r
587 FileWrite $0 ":done$\r$\n"\r
588 FileWrite $0 "setlocal$\r$\n"\r
589 FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
590 FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\cilc.exe %MONOARGS%$\r$\n"\r
591 FileWrite $0 "endlocal$\r$\n"\r
592 \r
593 FileClose $0\r
594 \r
595 NoInstall:\r
596 SectionEnd\r
597 \r
598 ; function StrReplace\r
599 ; by Hendri Adriaens\r
600 ; HendriAdriaens@hotmail.com\r
601 ; found in the NSIS Archives\r
602 function StrReplace\r
603   Exch $0 ;this will replace wrong characters\r
604   Exch\r
605   Exch $1 ;needs to be replaced\r
606   Exch\r
607   Exch 2\r
608   Exch $2 ;the orginal string\r
609   Push $3 ;counter\r
610   Push $4 ;temp character\r
611   Push $5 ;temp string\r
612   Push $6 ;length of string that need to be replaced\r
613   Push $7 ;length of string that will replace\r
614   Push $R0 ;tempstring\r
615   Push $R1 ;tempstring\r
616   Push $R2 ;tempstring\r
617   StrCpy $3 "-1"\r
618   StrCpy $5 ""\r
619   StrLen $6 $1\r
620   StrLen $7 $0\r
621   Loop:\r
622   IntOp $3 $3 + 1\r
623   StrCpy $4 $2 $6 $3\r
624   StrCmp $4 "" ExitLoop\r
625   StrCmp $4 $1 Replace\r
626   Goto Loop\r
627   Replace:\r
628   StrCpy $R0 $2 $3\r
629   IntOp $R2 $3 + $6\r
630   StrCpy $R1 $2 "" $R2\r
631   StrCpy $2 $R0$0$R1\r
632   IntOp $3 $3 + $7\r
633   Goto Loop\r
634   ExitLoop:\r
635   StrCpy $0 $2\r
636   Pop $R2\r
637   Pop $R1\r
638   Pop $R0\r
639   Pop $7\r
640   Pop $6\r
641   Pop $5\r
642   Pop $4\r
643   Pop $3\r
644   Pop $2\r
645   Pop $1\r
646   Exch $0\r
647 FunctionEnd\r
648 \r
649 Function VersionCheck\r
650   Exch $0 ;second versionnumber\r
651   Exch\r
652   Exch $1 ;first versionnumber\r
653   Push $R0 ;counter for $0\r
654   Push $R1 ;counter for $1\r
655   Push $3 ;temp char\r
656   Push $4 ;temp string for $0\r
657   Push $5 ;temp string for $1\r
658   StrCpy $R0 "-1"\r
659   StrCpy $R1 "-1"\r
660   Start:\r
661   StrCpy $4 ""\r
662   DotLoop0:\r
663   IntOp $R0 $R0 + 1\r
664   StrCpy $3 $0 1 $R0\r
665   StrCmp $3 "" DotFound0\r
666   StrCmp $3 "." DotFound0\r
667   StrCpy $4 $4$3\r
668   Goto DotLoop0\r
669   DotFound0:\r
670   StrCpy $5 ""\r
671   DotLoop1:\r
672   IntOp $R1 $R1 + 1\r
673   StrCpy $3 $1 1 $R1\r
674   StrCmp $3 "" DotFound1\r
675   StrCmp $3 "." DotFound1\r
676   StrCpy $5 $5$3\r
677   Goto DotLoop1\r
678   DotFound1:\r
679   Strcmp $4 "" 0 Not4\r
680     StrCmp $5 "" Equal\r
681     Goto Ver2Less\r
682   Not4:\r
683   StrCmp $5 "" Ver2More\r
684   IntCmp $4 $5 Start Ver2Less Ver2More\r
685   Equal:\r
686   StrCpy $0 "0"\r
687   Goto Finish\r
688   Ver2Less:\r
689   StrCpy $0 "1"\r
690   Goto Finish\r
691   Ver2More:\r
692   StrCpy $0 "2"\r
693   Finish:\r
694   Pop $5\r
695   Pop $4\r
696   Pop $3\r
697   Pop $R1\r
698   Pop $R0\r
699   Pop $1\r
700   Exch $0\r
701 FunctionEnd