Merge pull request #903 from simonhartmann/master
[mono.git] / mcs / tools / mono-win32-setup.nsi
index 99164d64215177c9ddf8a6150a23c62befdb396b..d4dc171879e24b6d11747f0509fd9429fb1b5e31 100755 (executable)
@@ -24,7 +24,7 @@
 ; =====================================================\r
 ;\r
 ;\r
-  !define MILESTONE "0.23" ;\r
+  !define MILESTONE "0.24" ;\r
   !define SOURCE_INSTALL_DIR "c:\mono-0.23-setup\install\\*" ;\r
 \r
 ; =====================================================\r
 ; =====================================================\r
 \r
  !define NAME "Mono" ;\r
- !define TARGET_INSTALL_DIR "c:\mono-${MILESTONE}" ;\r
+ !define TARGET_INSTALL_DIR "$PROGRAMFILES\Mono-${MILESTONE}" ;\r
  !define OUTFILE "mono-${MILESTONE}-win32-1.exe" ;\r
 \r
 ; =====================================================\r
@@ -147,7 +147,15 @@ Section "Uninstall"
   GoNext1:\r
 \r
   DeleteRegKey HKLM SOFTWARE\Mono\${MILESTONE}\r
-  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
+\r
+  ; If the Default-Key is the current Milestone, we just remove the wrappers\r
+\r
+  ReadRegStr $0 HKEY_LOCAL_MACHINE SOFTWARE\Mono\ DefaultCLR\r
+  StrCmp $0 ${MILESTONE} DeleteWrappers\r
+\r
+  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
+\r
+  DeleteWrappers:\r
 \r
   ; Complete Uninstall\r
 \r
@@ -164,6 +172,7 @@ Section "Uninstall"
   Delete $WINDIR\cert2spc.bat\r
   Delete $WINDIR\monoresgen.bat\r
   Delete $WINDIR\monosn.bat\r
+  Delete $WINDIR\cilc.bat\r
 \r
   GoNext2:\r
   NoUnInstall:\r
@@ -215,90 +224,98 @@ SectionEnd
 \r
 ; create bin/mono wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\mono.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/mint wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\mint.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mint.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mint.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/mcs wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\mcs.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/mcs.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/mcs.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/mbas wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\mbas.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/mbas.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/mbas.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/sqlsharp wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\sqlsharp.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/sqlsharp.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/sqlsharp.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/monodis wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\monodis.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/monodis.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/monodis.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/monoresgen wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\monoresgen.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/monoresgen.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/monoresgen.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/monoilasm wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\monoilasm.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/monoilasm.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/monoilasm.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/monosn wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\monosn.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/monosn.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/monosn.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/secutil wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\secutil.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/secutil.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/secutil.exe "$$@"'\r
 FileClose $0\r
 \r
 ; create bin/cert2spc wrapper to be used if the user has cygwin\r
 FileOpen $0 "$INSTDIR\bin\cert2spc.exe.sh" "w"\r
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/cert2spc.exe "$$@"'
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/cert2spc.exe "$$@"'\r
+FileClose $0\r
+\r
+; create bin/cilc wrapper to be used if the user has cygwin\r
+FileOpen $0 "$INSTDIR\bin\cilc.exe.sh" "w"\r
+FileWrite $0 "#!/bin/sh$\r$\n"\r
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"\r
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"\r
+FileWrite $0 '$6/bin/mono.exe $6/bin/cilc.exe "$$@"'\r
 FileClose $0\r
 \r
 ;\r
@@ -310,9 +327,9 @@ FileClose $0
 ;========================\r
 \r
 FileOpen $0 "$WINDIR\monobasepath.bat" "w"\r
-FileWrite $0 "set MONO_BASEPATH=$INSTDIR$\r$\n"\r
-FileWrite $0 "set MONO_PATH=%MONO_BASEPATH%\lib$\r$\n"\r
-FileWrite $0 "set MONO_CFG_DIR=%MONO_BASEPATH%\etc\mono"\r
+FileWrite $0 'set MONO_BASEPATH="$INSTDIR"$\r$\n'\r
+FileWrite $0 'set MONO_PATH=$INSTDIR\lib$\r$\n'\r
+FileWrite $0 'set MONO_CFG_DIR="$INSTDIR\etc\mono"'\r
 FileClose $0\r
 \r
 \r
@@ -332,8 +349,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\mcs.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\mcs.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -354,8 +371,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\mbas.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\mbas.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -376,8 +393,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mint.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mint.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -398,10 +415,9 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
-\r
 FileClose $0\r
 \r
 ;========================\r
@@ -420,8 +436,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\monodis.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\monodis.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -442,8 +458,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\monoilasm.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\monoilasm.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -465,8 +481,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\sqlsharp.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\sqlsharp.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -487,8 +503,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\secutil.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\secutil.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -509,8 +525,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\cert2spc.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\cert2spec.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -532,8 +548,8 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\mono.exe %MONO_BASEPATH%\bin\monoresgen.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\monoresgen.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r
@@ -554,8 +570,31 @@ FileWrite $0 "shift$\r$\n"
 FileWrite $0 "goto loop$\r$\n"\r
 FileWrite $0 ":done$\r$\n"\r
 FileWrite $0 "setlocal$\r$\n"\r
-FileWrite $0 'set path="%MONO_BASEPATH%\bin\;%MONO_BASEPATH%\lib\;%path%"$\r$\n'\r
-FileWrite $0 "%MONO_BASEPATH%\bin\monosn.exe %MONOARGS%$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\monosn.exe" %MONOARGS%$\r$\n'\r
+FileWrite $0 "endlocal$\r$\n"\r
+\r
+FileClose $0\r
+\r
+;========================\r
+; Write the cilc file\r
+;========================\r
+\r
+FileOpen $0 "$WINDIR\cilc.bat" "w"\r
+\r
+\r
+FileWrite $0 "@echo off$\r$\n"\r
+FileWrite $0 "call monobasepath.bat$\r$\n"\r
+FileWrite $0 "set MONOARGS=$\r$\n"\r
+FileWrite $0 ":loop$\r$\n"\r
+FileWrite $0 "if x%1 == x goto :done$\r$\n"\r
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"\r
+FileWrite $0 "shift$\r$\n"\r
+FileWrite $0 "goto loop$\r$\n"\r
+FileWrite $0 ":done$\r$\n"\r
+FileWrite $0 "setlocal$\r$\n"\r
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'\r
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\cilc.exe" %MONOARGS%$\r$\n'\r
 FileWrite $0 "endlocal$\r$\n"\r
 \r
 FileClose $0\r