1 ; =====================================================
\r
2 ; mono.nsi - Mono Setup wizard for windows
\r
3 ; =====================================================
\r
5 ; (C) Copyright 2003 by Johannes Roith
\r
6 ; (C) Copyright 2003 by Daniel Morgan
\r
9 ; Johannes Roith <johannes@jroith.de>
\r
10 ; Daniel Morgan <danmorg@sc.rr.com>
\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
17 ; =====================================================
\r
19 ; This script can build a binary setup wizard of mono.
\r
20 ; It is released under the GNU GPL.
\r
22 ; =====================================================
\r
23 ; SET MILESTONE & SOURCE DIR
\r
24 ; =====================================================
\r
27 !define MILESTONE "0.24" ;
\r
28 !define SOURCE_INSTALL_DIR "c:\mono-0.23-setup\install\\*" ;
\r
30 ; =====================================================
\r
32 ; =====================================================
\r
36 ; This adds a Mono-specific Image on the left
\r
37 ; You can choose between the light or dark one.
\r
39 ; If you wish no mono-specifi logo, please outcomment
\r
42 ; "light" is enabled.
\r
44 ; !define MUI_SPECIALBITMAP "mono-win32-setup-dark.bmp"
\r
45 !define MUI_SPECIALBITMAP "mono-win32-setup-light.bmp"
\r
47 ; =====================================================
\r
49 ; =====================================================
\r
51 ; 1. Build mono. The install directory must not contain
\r
52 ; anything else - everything gets packed in!!!
\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
57 ; 3. Get latest nsis from cvs or a development snapshot
\r
58 ; from http://nsis.sf.net
\r
60 ; 4. Adapt the MILESTONE
\r
62 ; 5. Adapt the SOURCE_INSTALL_DIR above to match your
\r
63 ; install directory. Do not remove \\* at the end!!
\r
65 ; 6. Open this script in makensisw.exe
\r
67 ; 7. The output file is mono-[MILESTONE]-win32-1.exe
\r
73 ; =====================================================
\r
74 ; MONO & REGISTRY / DETECTING MONO
\r
75 ; =====================================================
\r
78 ; This setup creates several Registry Keys:
\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
85 ; =====================================================
\r
87 ; To get the current Mono Install Directory:
\r
90 ; 2. Get HKEY_LOCAL_MACHINE SOFTWARE\Mono\$THE_DEFAULT_CLR_VALUE SdkInstallRoot
\r
92 ; =====================================================
\r
94 ; To get the current Mono assembly Directory:
\r
97 ; 2. Get HKEY_LOCAL_MACHINE SOFTWARE\Mono\$THE_DEFAULT_CLR_VALUE FrameworkAssemblyDirectory
\r
99 ; =====================================================
\r
100 ; Do not edit below
\r
101 ; =====================================================
\r
104 ; =====================================================
\r
105 ; GENERAL SETTING - NEED NOT TO BE CHANGED
\r
106 ; =====================================================
\r
108 !define NAME "Mono" ;
\r
109 !define TARGET_INSTALL_DIR "$PROGRAMFILES\Mono-${MILESTONE}" ;
\r
110 !define OUTFILE "mono-${MILESTONE}-win32-1.exe" ;
\r
112 ; =====================================================
\r
114 ; =====================================================
\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
130 OutFile "${OUTFILE}"
\r
131 InstallDir "${TARGET_INSTALL_DIR}"
\r
134 ;========================
\r
136 ;========================
\r
138 Section "Uninstall"
\r
140 MessageBox MB_YESNO "Are you sure you want to uninstall Mono from your system?" IDNO NoUnInstall
\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
145 MessageBox MB_YESNO "Mono was installed into $INSTDIR. Should this directory be removed completly?" IDNO GoNext1
\r
149 DeleteRegKey HKLM SOFTWARE\Mono\${MILESTONE}
\r
151 ; If the Default-Key is the current Milestone, we just remove the wrappers
\r
153 ReadRegStr $0 HKEY_LOCAL_MACHINE SOFTWARE\Mono\ DefaultCLR
\r
154 StrCmp $0 ${MILESTONE} DeleteWrappers
\r
156 MessageBox MB_YESNO "Mono ${MILESTONE} has been removed, but the default installation of Mono differs form this version. Should the wrappers and the Mono registry key be still be removed? This could disable other Mono installations." IDNO GoNext2
\r
160 ; Complete Uninstall
\r
162 DeleteRegKey HKLM SOFTWARE\Mono
\r
163 Delete $WINDIR\monobasepath.bat
\r
164 Delete $WINDIR\mcs.bat
\r
165 Delete $WINDIR\mbas.bat
\r
166 Delete $WINDIR\mint.bat
\r
167 Delete $WINDIR\mono.bat
\r
168 Delete $WINDIR\monodis.bat
\r
169 Delete $WINDIR\monoilasm.bat
\r
170 Delete $WINDIR\sqlsharp.bat
\r
171 Delete $WINDIR\secutil.bat
\r
172 Delete $WINDIR\cert2spc.bat
\r
173 Delete $WINDIR\monoresgen.bat
\r
174 Delete $WINDIR\monosn.bat
\r
175 Delete $WINDIR\cilc.bat
\r
185 ; Warn people if a newer Mono is already installed
\r
187 ReadRegStr $0 HKEY_LOCAL_MACHINE SOFTWARE\Mono\ DefaultCLR
\r
192 StrCmp $0 0 NoAskInstall
\r
193 StrCmp $0 2 NoAskInstall
\r
194 MessageBox MB_YESNO "A newer Mono version is already installed. Still continue?" IDNO NoInstall
\r
198 SetOutPath $INSTDIR
\r
199 File /r "${SOURCE_INSTALL_DIR}"
\r
200 WriteUninstaller Uninst.exe
\r
202 WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} SdkInstallRoot $INSTDIR
\r
203 WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} FrameworkAssemblyDirectory $INSTDIR\lib
\r
204 WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} MonoConfigDir $INSTDIR\etc\mono
\r
205 ;WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} GtkSharpLibPath $INSTDIR\lib
\r
206 WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono DefaultCLR ${MILESTONE}
\r
208 ; Mono Uninstall Entry in Windows Software List in the Control panel
\r
209 WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} DisplayName "Mono ${MILESTONE}"
\r
210 WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} UninstallString $INSTDIR\uninst.exe
\r
212 ;original string is like C:\mono-0.20\install
\r
213 StrCpy $5 $INSTDIR
\r
215 Push "\" ;search for this string
\r
216 Push "/" ;replace with this string
\r
218 ;resulting string which is like C:/mono-0.20/install
\r
221 ;========================
\r
222 ; Write the wrapper files
\r
223 ;========================
\r
225 ; create bin/mono wrapper to be used if the user has cygwin
\r
226 FileOpen $0 "$INSTDIR\bin\mono.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/mono.exe "$$@"'
233 ; create bin/mint wrapper to be used if the user has cygwin
\r
234 FileOpen $0 "$INSTDIR\bin\mint.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/mint.exe "$$@"'
241 ; create bin/mcs wrapper to be used if the user has cygwin
\r
242 FileOpen $0 "$INSTDIR\bin\mcs.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/mcs.exe "$$@"'
249 ; create bin/mbas wrapper to be used if the user has cygwin
\r
250 FileOpen $0 "$INSTDIR\bin\mbas.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/mbas.exe "$$@"'
257 ; create bin/sqlsharp wrapper to be used if the user has cygwin
\r
258 FileOpen $0 "$INSTDIR\bin\sqlsharp.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/sqlsharp.exe "$$@"'
265 ; create bin/monodis wrapper to be used if the user has cygwin
\r
266 FileOpen $0 "$INSTDIR\bin\monodis.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/monodis.exe "$$@"'
273 ; create bin/monoresgen wrapper to be used if the user has cygwin
\r
274 FileOpen $0 "$INSTDIR\bin\monoresgen.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/monoresgen.exe "$$@"'
281 ; create bin/monoilasm wrapper to be used if the user has cygwin
\r
282 FileOpen $0 "$INSTDIR\bin\monoilasm.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/monoilasm.exe "$$@"'
289 ; create bin/monosn wrapper to be used if the user has cygwin
\r
290 FileOpen $0 "$INSTDIR\bin\monosn.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/monosn.exe "$$@"'
297 ; create bin/secutil wrapper to be used if the user has cygwin
\r
298 FileOpen $0 "$INSTDIR\bin\secutil.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/secutil.exe "$$@"'
305 ; create bin/cert2spc wrapper to be used if the user has cygwin
\r
306 FileOpen $0 "$INSTDIR\bin\cert2spc.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/cert2spc.exe "$$@"'
313 ; create bin/cilc wrapper to be used if the user has cygwin
\r
314 FileOpen $0 "$INSTDIR\bin\cilc.exe.sh" "w"
\r
315 FileWrite $0 "#!/bin/sh$\r$\n"
316 FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
317 FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
318 FileWrite $0 '$6/bin/mono.exe $6/bin/cilc.exe "$$@"'
322 ; These wrappers are copied to the windows directory.
\r
325 ;========================
\r
326 ; Write the path file
\r
327 ;========================
\r
329 FileOpen $0 "$WINDIR\monobasepath.bat" "w"
\r
330 FileWrite $0 'set MONO_BASEPATH="$INSTDIR"$\r$\n'
\r
331 FileWrite $0 'set MONO_PATH=$INSTDIR\lib$\r$\n'
\r
332 FileWrite $0 'set MONO_CFG_DIR="$INSTDIR\etc\mono"'
\r
336 ;========================
\r
337 ; Write the mcs file
\r
338 ;========================
\r
340 FileOpen $0 "$WINDIR\mcs.bat" "w"
\r
342 FileWrite $0 "@echo off$\r$\n"
\r
343 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
344 FileWrite $0 "set MONOARGS=$\r$\n"
\r
345 FileWrite $0 ":loop$\r$\n"
\r
346 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
347 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
348 FileWrite $0 "shift$\r$\n"
\r
349 FileWrite $0 "goto loop$\r$\n"
\r
350 FileWrite $0 ":done$\r$\n"
\r
351 FileWrite $0 "setlocal$\r$\n"
\r
352 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
353 FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\mcs.exe" %MONOARGS%$\r$\n'
\r
354 FileWrite $0 "endlocal$\r$\n"
\r
358 ;========================
\r
359 ; Write the mbas file
\r
360 ;========================
\r
362 FileOpen $0 "$WINDIR\mbas.bat" "w"
\r
364 FileWrite $0 "@echo off$\r$\n"
\r
365 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
366 FileWrite $0 "set MONOARGS=$\r$\n"
\r
367 FileWrite $0 ":loop$\r$\n"
\r
368 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
369 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
370 FileWrite $0 "shift$\r$\n"
\r
371 FileWrite $0 "goto loop$\r$\n"
\r
372 FileWrite $0 ":done$\r$\n"
\r
373 FileWrite $0 "setlocal$\r$\n"
\r
374 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
375 FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\mbas.exe" %MONOARGS%$\r$\n'
\r
376 FileWrite $0 "endlocal$\r$\n"
\r
380 ;========================
\r
381 ; Write the mint file
\r
382 ;========================
\r
384 FileOpen $0 "$WINDIR\mint.bat" "w"
\r
386 FileWrite $0 "@echo off$\r$\n"
\r
387 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
388 FileWrite $0 "set MONOARGS=$\r$\n"
\r
389 FileWrite $0 ":loop$\r$\n"
\r
390 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
391 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
392 FileWrite $0 "shift$\r$\n"
\r
393 FileWrite $0 "goto loop$\r$\n"
\r
394 FileWrite $0 ":done$\r$\n"
\r
395 FileWrite $0 "setlocal$\r$\n"
\r
396 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
397 FileWrite $0 '"$INSTDIR\bin\mint.exe" %MONOARGS%$\r$\n'
\r
398 FileWrite $0 "endlocal$\r$\n"
\r
402 ;========================
\r
403 ; Write the mono file
\r
404 ;========================
\r
406 FileOpen $0 "$WINDIR\mono.bat" "w"
\r
408 FileWrite $0 "@echo off$\r$\n"
\r
409 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
410 FileWrite $0 "set MONOARGS=$\r$\n"
\r
411 FileWrite $0 ":loop$\r$\n"
\r
412 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
413 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
414 FileWrite $0 "shift$\r$\n"
\r
415 FileWrite $0 "goto loop$\r$\n"
\r
416 FileWrite $0 ":done$\r$\n"
\r
417 FileWrite $0 "setlocal$\r$\n"
\r
418 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
419 FileWrite $0 '"$INSTDIR\bin\mono.exe" %MONOARGS%$\r$\n'
\r
420 FileWrite $0 "endlocal$\r$\n"
\r
423 ;========================
\r
425 ;========================
\r
427 FileOpen $0 "$WINDIR\monodis.bat" "w"
\r
429 FileWrite $0 "@echo off$\r$\n"
\r
430 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
431 FileWrite $0 "set MONOARGS=$\r$\n"
\r
432 FileWrite $0 ":loop$\r$\n"
\r
433 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
434 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
435 FileWrite $0 "shift$\r$\n"
\r
436 FileWrite $0 "goto loop$\r$\n"
\r
437 FileWrite $0 ":done$\r$\n"
\r
438 FileWrite $0 "setlocal$\r$\n"
\r
439 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
440 FileWrite $0 '"$INSTDIR\bin\monodis.exe" %MONOARGS%$\r$\n'
\r
441 FileWrite $0 "endlocal$\r$\n"
\r
445 ;========================
\r
447 ;========================
\r
449 FileOpen $0 "$WINDIR\monoilasm.bat" "w"
\r
451 FileWrite $0 "@echo off$\r$\n"
\r
452 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
453 FileWrite $0 "set MONOARGS=$\r$\n"
\r
454 FileWrite $0 ":loop$\r$\n"
\r
455 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
456 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
457 FileWrite $0 "shift$\r$\n"
\r
458 FileWrite $0 "goto loop$\r$\n"
\r
459 FileWrite $0 ":done$\r$\n"
\r
460 FileWrite $0 "setlocal$\r$\n"
\r
461 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
462 FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\monoilasm.exe" %MONOARGS%$\r$\n'
\r
463 FileWrite $0 "endlocal$\r$\n"
\r
468 ;========================
\r
469 ; Write the sqlsharp file
\r
470 ;========================
\r
472 FileOpen $0 "$WINDIR\sqlsharp.bat" "w"
\r
474 FileWrite $0 "@echo off$\r$\n"
\r
475 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
476 FileWrite $0 "set MONOARGS=$\r$\n"
\r
477 FileWrite $0 ":loop$\r$\n"
\r
478 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
479 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
480 FileWrite $0 "shift$\r$\n"
\r
481 FileWrite $0 "goto loop$\r$\n"
\r
482 FileWrite $0 ":done$\r$\n"
\r
483 FileWrite $0 "setlocal$\r$\n"
\r
484 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
485 FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\sqlsharp.exe" %MONOARGS%$\r$\n'
\r
486 FileWrite $0 "endlocal$\r$\n"
\r
490 ;========================
\r
491 ; Write the secutil file
\r
492 ;========================
\r
494 FileOpen $0 "$WINDIR\secutil.bat" "w"
\r
496 FileWrite $0 "@echo off$\r$\n"
\r
497 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
498 FileWrite $0 "set MONOARGS=$\r$\n"
\r
499 FileWrite $0 ":loop$\r$\n"
\r
500 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
501 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
502 FileWrite $0 "shift$\r$\n"
\r
503 FileWrite $0 "goto loop$\r$\n"
\r
504 FileWrite $0 ":done$\r$\n"
\r
505 FileWrite $0 "setlocal$\r$\n"
\r
506 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
507 FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\secutil.exe" %MONOARGS%$\r$\n'
\r
508 FileWrite $0 "endlocal$\r$\n"
\r
512 ;========================
\r
513 ; Write the cert2spc file
\r
514 ;========================
\r
516 FileOpen $0 "$WINDIR\cert2spc.bat" "w"
\r
518 FileWrite $0 "@echo off$\r$\n"
\r
519 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
520 FileWrite $0 "set MONOARGS=$\r$\n"
\r
521 FileWrite $0 ":loop$\r$\n"
\r
522 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
523 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
524 FileWrite $0 "shift$\r$\n"
\r
525 FileWrite $0 "goto loop$\r$\n"
\r
526 FileWrite $0 ":done$\r$\n"
\r
527 FileWrite $0 "setlocal$\r$\n"
\r
528 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
529 FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\cert2spec.exe" %MONOARGS%$\r$\n'
\r
530 FileWrite $0 "endlocal$\r$\n"
\r
535 ;========================
\r
536 ; Write the monoresgen file
\r
537 ;========================
\r
539 FileOpen $0 "$WINDIR\monoresgen.bat" "w"
\r
541 FileWrite $0 "@echo off$\r$\n"
\r
542 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
543 FileWrite $0 "set MONOARGS=$\r$\n"
\r
544 FileWrite $0 ":loop$\r$\n"
\r
545 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
546 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
547 FileWrite $0 "shift$\r$\n"
\r
548 FileWrite $0 "goto loop$\r$\n"
\r
549 FileWrite $0 ":done$\r$\n"
\r
550 FileWrite $0 "setlocal$\r$\n"
\r
551 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
552 FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\monoresgen.exe" %MONOARGS%$\r$\n'
\r
553 FileWrite $0 "endlocal$\r$\n"
\r
557 ;========================
\r
558 ; Write the monosn file
\r
559 ;========================
\r
561 FileOpen $0 "$WINDIR\monosn.bat" "w"
\r
563 FileWrite $0 "@echo off$\r$\n"
\r
564 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
565 FileWrite $0 "set MONOARGS=$\r$\n"
\r
566 FileWrite $0 ":loop$\r$\n"
\r
567 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
568 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
569 FileWrite $0 "shift$\r$\n"
\r
570 FileWrite $0 "goto loop$\r$\n"
\r
571 FileWrite $0 ":done$\r$\n"
\r
572 FileWrite $0 "setlocal$\r$\n"
\r
573 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
574 FileWrite $0 '"$INSTDIR\bin\monosn.exe" %MONOARGS%$\r$\n'
\r
575 FileWrite $0 "endlocal$\r$\n"
\r
579 ;========================
\r
580 ; Write the cilc file
\r
581 ;========================
\r
583 FileOpen $0 "$WINDIR\cilc.bat" "w"
\r
586 FileWrite $0 "@echo off$\r$\n"
\r
587 FileWrite $0 "call monobasepath.bat$\r$\n"
\r
588 FileWrite $0 "set MONOARGS=$\r$\n"
\r
589 FileWrite $0 ":loop$\r$\n"
\r
590 FileWrite $0 "if x%1 == x goto :done$\r$\n"
\r
591 FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
\r
592 FileWrite $0 "shift$\r$\n"
\r
593 FileWrite $0 "goto loop$\r$\n"
\r
594 FileWrite $0 ":done$\r$\n"
\r
595 FileWrite $0 "setlocal$\r$\n"
\r
596 FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
\r
597 FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\cilc.exe" %MONOARGS%$\r$\n'
\r
598 FileWrite $0 "endlocal$\r$\n"
\r
605 ; function StrReplace
\r
606 ; by Hendri Adriaens
\r
607 ; HendriAdriaens@hotmail.com
\r
608 ; found in the NSIS Archives
\r
609 function StrReplace
\r
610 Exch $0 ;this will replace wrong characters
\r
612 Exch $1 ;needs to be replaced
\r
615 Exch $2 ;the orginal string
\r
617 Push $4 ;temp character
\r
618 Push $5 ;temp string
\r
619 Push $6 ;length of string that need to be replaced
\r
620 Push $7 ;length of string that will replace
\r
621 Push $R0 ;tempstring
\r
622 Push $R1 ;tempstring
\r
623 Push $R2 ;tempstring
\r
631 StrCmp $4 "" ExitLoop
\r
632 StrCmp $4 $1 Replace
\r
637 StrCpy $R1 $2 "" $R2
\r
656 Function VersionCheck
\r
657 Exch $0 ;second versionnumber
\r
659 Exch $1 ;first versionnumber
\r
660 Push $R0 ;counter for $0
\r
661 Push $R1 ;counter for $1
\r
663 Push $4 ;temp string for $0
\r
664 Push $5 ;temp string for $1
\r
672 StrCmp $3 "" DotFound0
\r
673 StrCmp $3 "." DotFound0
\r
681 StrCmp $3 "" DotFound1
\r
682 StrCmp $3 "." DotFound1
\r
686 Strcmp $4 "" 0 Not4
\r
690 StrCmp $5 "" Ver2More
\r
691 IntCmp $4 $5 Start Ver2Less Ver2More
\r