In tools:
[mono.git] / mcs / tools / mono-win32-setup.nsi
index 1e4ef31726b50cc9637acaad5741f429da78dac5..fedc268d68130292ed99478dee41aa52df054e31 100755 (executable)
 ; =====================================================\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
+; SET LOGO\r
+; =====================================================\r
+;\r
+;  Beautification:\r
+;\r
+;  This adds a Mono-specific Image on the left\r
+;  You can choose between the light or dark one.\r
+;  \r
+;  If you wish no mono-specifi logo, please outcomment\r
+;  the lines.\r
+;  \r
+;  "light" is enabled.\r
+;\r
+;  !define MUI_SPECIALBITMAP "mono-win32-setup-dark.bmp"\r
+   !define MUI_SPECIALBITMAP "mono-win32-setup-light.bmp"\r
+\r
 ; =====================================================\r
 ; BUILDING\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
 ; SCRIPT\r
 ; =====================================================\r
 \r
-\r
-; [NOT ACTIVE] Beautification: This adds a Mono-specific Image on the left\r
-; !define MUI_SPECIALBITMAP "mono.bmp"\r
-\r
  !define MUI_PRODUCT "${NAME}"\r
  !define MUI_VERSION "${MILESTONE}"\r
  !define FULLNAME "${MUI_PRODUCT} ${MUI_VERSION}"\r
@@ -134,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
@@ -151,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
@@ -288,6 +310,14 @@ FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
 FileWrite $0 '$6/bin/mono.exe $6/bin/cert2spc.exe "$$@"'
 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"
+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/cilc.exe "$$@"'
+FileClose $0\r
+\r
 ;\r
 ; These wrappers are copied to the windows directory.\r
 ;\r
@@ -297,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
@@ -319,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
@@ -341,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
@@ -363,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
@@ -385,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
@@ -407,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
@@ -429,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
@@ -452,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
@@ -474,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
@@ -496,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
@@ -519,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
@@ -541,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