123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- !include "WordFunc.nsh"
- !macro DefineDateStamp
- ${time::GetLocalTime} $RESULT
- ${time::TimeString} "$RESULT" $0 $1 $2 $3 $4 $5
- !define DATE_STAMP "$2-$1-$0-$3-$4-$5"
- !macroend
- !macro RefreshEnv
- DetailPrint "Refreshing your computer's environment..."
- SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" $RESULT /TIMEOUT=5000
- DetailPrint "Done."
- !macroend
- !macro ReadUsrEnvVar VARNAME RESULT
- ReadRegStr ${RESULT} HKCU "Environment" ${VARNAME}
- !macroend
- !macro ReadSysEnvVar VARNAME RESULT
- ReadRegStr ${RESULT} HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" ${VARNAME}
- !macroend
- !macro ReadEnvVar VARNAME RESULT
- ${If} $USERONLYINSTALL_STATE == ${BST_CHECKED}
-
- !insertmacro ReadUsrEnvVar ${VARNAME} ${RESULT}
- ${ElseIf} $ALLUSERSINSTALL_STATE == ${BST_CHECKED}
-
- !insertmacro ReadSysEnvVar ${VARNAME} ${RESULT}
- ${Else}
-
- MessageBox MB_OK|MB_ICONSTOP "Failed to determine installation type (Current User or All Users)." /SD IDOK
- ${EndIf}
- !macroend
- !macro ReadUsrPath OUTPUT
-
- ClearErrors
- !insertmacro ReadUsrEnvVar "Path" ${OUTPUT}
-
- ${If} ${Errors}
- DetailPrint "User has no Path variable."
- StrCpy "${OUTPUT}" ""
- ${EndIf}
- !macroend
- !macro ReadSysPath OUTPUT
-
- ClearErrors
- !insertmacro ReadSysEnvVar "Path" ${OUTPUT}
- !macroend
- !macro ReadPath OUTPUT
- ${If} $USERONLYINSTALL_STATE == ${BST_CHECKED}
-
- !insertmacro ReadUsrPath ${OUTPUT}
- ${ElseIf} $ALLUSERSINSTALL_STATE == ${BST_CHECKED}
-
- !insertmacro ReadSysPath ${OUTPUT}
- ${Else}
-
- MessageBox MB_OK|MB_ICONSTOP "Failed to determine installation type (Current User or All Users)." /SD IDOK
- ${EndIf}
- !macroend
- !macro WriteUsrEnvVar VARNAME VALUE
- WriteRegStr HKCU "Environment" ${VARNAME} ${VALUE}
- !macroend
- !macro WriteSysEnvVar VARNAME VALUE
- WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" ${VARNAME} ${VALUE}
- !macroend
- !macro WriteUsrEnvVarExp VARNAME VALUE
- WriteRegExpandStr HKCU "Environment" ${VARNAME} ${VALUE}
- !macroend
- !macro WriteSysEnvVarExp VARNAME VALUE
- WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" ${VARNAME} ${VALUE}
- !macroend
- !macro RmUsrEnvVar VARNAME
- DeleteRegValue HKCU "Environment" ${VARNAME}
- !macroend
- !macro RmSysEnvVar VARNAME
- DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" ${VARNAME}
- !macroend
- Function WriteEnvVar
- pop $2
- pop $1
- pop $0
-
- DetailPrint "Going to write evn var $0, with value $1, expandable: $2."
-
-
- ClearErrors
-
- ${If} $2 == "exp"
-
- ${If} $USERONLYINSTALL_STATE == ${BST_CHECKED}
- DetailPrint "DEBUG $$0 $$1 = $0 $1"
-
- !insertmacro WriteUsrEnvVarExp $0 $1
- ${ElseIf} $ALLUSERSINSTALL_STATE == ${BST_CHECKED}
- DetailPrint "DEBUG $$0 $$1 = $0 $1"
-
- !insertmacro WriteSysEnvVarExp $0 $1
- ${Else}
-
- MessageBox MB_OK|MB_ICONSTOP "Failed to determine installation type (Current User or All Users)." /SD IDOK
- ${EndIf}
- ${Else}
-
- ${If} $USERONLYINSTALL_STATE == ${BST_CHECKED}
- DetailPrint "DEBUG $$0 $$1 = $0 $1"
-
- !insertmacro WriteUsrEnvVar $0 $1
- ${ElseIf} $ALLUSERSINSTALL_STATE == ${BST_CHECKED}
- DetailPrint "DEBUG $$0 $$1 = $0 $1"
-
- !insertmacro WriteSysEnvVar $0 $1
- ${Else}
-
- MessageBox MB_OK|MB_ICONSTOP "Failed to determine installation type (Current User or All Users)." /SD IDOK
- ${EndIf}
- ${EndIf}
- FunctionEnd
- Function PrependToPath
- pop $0
-
- DetailPrint "Going to prepend PATH with $0."
-
-
- ClearErrors
-
-
- !insertmacro ReadPath $RESULT
-
- ${Unless} ${Errors}
- ${REQuoteMeta} $9 $0
- ${If} $RESULT !~ $9
- StrLen $RESULT2 "$0;$RESULT"
-
- ${If} $RESULT2 > 1023
- DetailPrint "Note: adding %SBS_HOME%\bin; to the start of your Path..."
- DetailPrint "... will result in a string longer than 1023 characters..."
- DetailPrint "... being written to your registry. Certain versions of Windows..."
- DetailPrint "... cannot handle a string that long in the registry. The installer..."
- DetailPrint "... will continue writing to the registry. However, a back up of..."
- DetailPrint "... your full environment has been created in your installation directory ..."
- DetailPrint "... should anything go wrong which can be used to restore your previous Path."
- ${EndIf}
-
- Push "Path"
- Push "$0;$RESULT"
- Push "exp"
-
- call WriteEnvVar
- ${EndIf}
- ${Else}
- DetailPrint "Error: failed to read Path environment variable."
- ${EndUnless}
- FunctionEnd
- !macro RemoveFromPathString PATH STR
- DetailPrint "Going to remove ${STR} from ${PATH}."
- ${WordReplace} "${PATH}" "${STR}" "" "+" $RESULT2
- DetailPrint "Debug: Replaced ${STR} in RESULT2 = [$RESULT2]"
- StrCpy ${PATH} "$RESULT2"
-
- ${WordReplace} "${PATH}" ";;" ";" "+" $RESULT2
- DetailPrint "Debug: Replaced ;; in RESULT2 = [$RESULT2]"
- StrCpy ${PATH} $RESULT2
- !macroend
- !macro WriteFile FILENAME CONTENTS
- DetailPrint "Creating batch file for setting Raptor's environment..."
- ClearErrors
- FileOpen $0 ${FILENAME} w
- ${Unless} ${Errors}
- FileWrite $0 "${CONTENTS}"
- FileClose $0
- DetailPrint "Done."
- ${Else}
- DetailPrint "Error: failed to write RaptorEnv.bat."
- ${EndUnless}
- !macroend
|