1@ECHO OFF 2 3:: 4:: GetTclKit.bat -- 5:: 6:: TclKit Download Tool 7:: 8 9SETLOCAL 10 11REM SET __ECHO=ECHO 12REM SET __ECHO2=ECHO 13REM SET __ECHO3=ECHO 14IF NOT DEFINED _AECHO (SET _AECHO=REM) 15IF NOT DEFINED _CECHO (SET _CECHO=REM) 16IF NOT DEFINED _VECHO (SET _VECHO=REM) 17 18SET OVERWRITE=^> 19IF DEFINED __ECHO SET OVERWRITE=^^^> 20 21SET APPEND=^>^> 22IF DEFINED __ECHO SET APPEND=^^^>^^^> 23 24SET PROCESSOR=%1 25 26IF DEFINED PROCESSOR ( 27 CALL :fn_UnquoteVariable PROCESSOR 28) ELSE ( 29 GOTO usage 30) 31 32%_VECHO% Processor = '%PROCESSOR%' 33 34SET DUMMY2=%2 35 36IF DEFINED DUMMY2 ( 37 GOTO usage 38) 39 40SET ROOT=%~dp0\.. 41SET ROOT=%ROOT:\\=\% 42 43%_VECHO% Root = '%ROOT%' 44 45SET TOOLS=%~dp0 46SET TOOLS=%TOOLS:~0,-1% 47 48%_VECHO% Tools = '%TOOLS%' 49 50IF NOT DEFINED windir ( 51 ECHO The windir environment variable must be set first. 52 GOTO errors 53) 54 55%_VECHO% WinDir = '%windir%' 56 57IF NOT DEFINED TEMP ( 58 ECHO The TEMP environment variable must be set first. 59 GOTO errors 60) 61 62%_VECHO% Temp = '%TEMP%' 63 64IF NOT DEFINED TCLKIT_URI ( 65 SET TCLKIT_URI=http://tclsh.com/ 66) 67 68%_VECHO% TclKitUri = '%TCLKIT_URI%' 69 70IF /I "%PROCESSOR%" == "x86" ( 71 CALL :fn_TclKitX86Variables 72) ELSE IF /I "%PROCESSOR%" == "x64" ( 73 CALL :fn_TclKitX64Variables 74) ELSE ( 75 GOTO usage 76) 77 78%_VECHO% TclKitVersion = '%TCLKIT_VERSION%' 79%_VECHO% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%' 80%_VECHO% TclKitNoSdk = '%TCLKIT_NOSDK%' 81%_VECHO% TclKitExe = '%TCLKIT_EXE%' 82%_VECHO% TclKitLib = '%TCLKIT_LIB%' 83%_VECHO% TclKitLibStub = '%TCLKIT_LIB_STUB%' 84%_VECHO% TclKitSdk = '%TCLKIT_SDK%' 85%_VECHO% TclKitSdkZip = '%TCLKIT_SDK_ZIP%' 86%_VECHO% TclKitFiles = '%TCLKIT_FILES%' 87 88CALL :fn_ResetErrorLevel 89 90FOR %%T IN (csc.exe) DO ( 91 SET %%T_PATH=%%~dp$PATH:T 92) 93 94%_VECHO% Csc.exe_PATH = '%csc.exe_PATH%' 95 96IF DEFINED csc.exe_PATH ( 97 GOTO skip_addToPath 98) 99 100IF DEFINED FRAMEWORKDIR ( 101 REM Use the existing .NET Framework directory... 102) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v2.0.50727" ( 103 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v2.0.50727 104) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v3.5" ( 105 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v3.5 106) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319" ( 107 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v4.0.30319 108) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v2.0.50727" ( 109 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v2.0.50727 110) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v3.5" ( 111 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v3.5 112) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319" ( 113 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v4.0.30319 114) ELSE ( 115 ECHO No suitable version of the .NET Framework appears to be installed. 116 GOTO errors 117) 118 119%_VECHO% FrameworkDir = '%FRAMEWORKDIR%' 120 121IF NOT EXIST "%FRAMEWORKDIR%\csc.exe" ( 122 ECHO The file "%FRAMEWORKDIR%\csc.exe" is missing. 123 GOTO errors 124) 125 126SET PATH=%FRAMEWORKDIR%;%PATH% 127 128:skip_addToPath 129 130IF NOT EXIST "%TEMP%\GetFile.exe" ( 131 %__ECHO% csc.exe "/out:%TEMP%\GetFile.exe" /target:exe "%TOOLS%\GetFile.cs" 132 133 IF ERRORLEVEL 1 ( 134 ECHO Compilation of "%TOOLS%\GetFile.cs" failed. 135 GOTO errors 136 ) 137) 138 139FOR %%F IN (%TCLKIT_FILES%) DO ( 140 IF NOT EXIST "%TEMP%\%%F" ( 141 %__ECHO% "%TEMP%\GetFile.exe" "%TCLKIT_URI%%%F" 142 143 IF ERRORLEVEL 1 ( 144 ECHO Download of "%%F" from "%TCLKIT_URI%" failed. 145 GOTO errors 146 ) 147 ) 148) 149 150IF DEFINED TCLKIT_NOSDK GOTO skip_sdkUnZip 151 152IF NOT EXIST "%TEMP%\%TCLKIT_SDK%" ( 153 %__ECHO% MKDIR "%TEMP%\%TCLKIT_SDK%" 154 155 IF ERRORLEVEL 1 ( 156 ECHO Could not create directory "%TEMP%\%TCLKIT_SDK%". 157 GOTO errors 158 ) 159) 160 161%__ECHO% "%TEMP%\unzip.exe" -n "%TEMP%\%TCLKIT_SDK_ZIP%" -d "%TEMP%\%TCLKIT_SDK%" 162 163IF ERRORLEVEL 1 ( 164 ECHO Could not unzip "%TEMP%\%TCLKIT_SDK_ZIP%" to "%TEMP%\%TCLKIT_SDK%". 165 GOTO errors 166) 167 168:skip_sdkUnZip 169 170%__ECHO% ECHO SET TCLSH_CMD=%TEMP%\%TCLKIT_EXE%%OVERWRITE%"%ROOT%\SetTclKitEnv.bat" 171 172IF DEFINED TCLKIT_NOSDK GOTO skip_sdkVariables 173 174%__ECHO% ECHO SET TCLINCDIR=%TEMP%\%TCLKIT_SDK%\include%APPEND%"%ROOT%\SetTclKitEnv.bat" 175%__ECHO% ECHO SET TCLLIBDIR=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ROOT%\SetTclKitEnv.bat" 176%__ECHO% ECHO SET LIBTCL=%TCLKIT_LIB%%APPEND%"%ROOT%\SetTclKitEnv.bat" 177%__ECHO% ECHO SET LIBTCLSTUB=%TCLKIT_LIB_STUB%%APPEND%"%ROOT%\SetTclKitEnv.bat" 178 179:skip_sdkVariables 180 181ECHO. 182ECHO Wrote "%ROOT%\SetTclKitEnv.bat". 183ECHO Please run it to set the necessary Tcl environment variables. 184ECHO. 185 186GOTO no_errors 187 188:fn_TclKitX86Variables 189 IF NOT DEFINED TCLKIT_PATCHLEVEL ( 190 SET TCLKIT_PATCHLEVEL=8.6.4 191 ) 192 SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=% 193 SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2% 194 SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe 195 SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib 196 SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a 197 SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL% 198 SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip 199 SET TCLKIT_FILES=%TCLKIT_EXE% 200 IF NOT DEFINED TCLKIT_NOSDK ( 201 SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP% 202 ) 203 GOTO :EOF 204 205:fn_TclKitX64Variables 206 IF NOT DEFINED TCLKIT_PATCHLEVEL ( 207 REM 208 REM NOTE: By default, use latest available version of the TclKit SDK 209 REM for x64. However, the "default" TclKit executable for x86 210 REM is still used here because it is the only one "well-known" 211 REM to be available for download. 212 REM 213 SET TCLKIT_PATCHLEVEL=8.6.3 214 SET TCLKIT_EXE=tclkit-8.6.4.exe 215 ) ELSE ( 216 SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe 217 ) 218 SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=% 219 SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2% 220 SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib 221 SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a 222 SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL% 223 SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip 224 SET TCLKIT_FILES=%TCLKIT_EXE% 225 IF NOT DEFINED TCLKIT_NOSDK ( 226 SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP% 227 ) 228 GOTO :EOF 229 230:fn_UnquoteVariable 231 IF NOT DEFINED %1 GOTO :EOF 232 SETLOCAL 233 SET __ECHO_CMD=ECHO %%%1%% 234 FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO ( 235 SET VALUE=%%V 236 ) 237 SET VALUE=%VALUE:"=% 238 REM " 239 ENDLOCAL && SET %1=%VALUE% 240 GOTO :EOF 241 242:fn_ResetErrorLevel 243 VERIFY > NUL 244 GOTO :EOF 245 246:fn_SetErrorLevel 247 VERIFY MAYBE 2> NUL 248 GOTO :EOF 249 250:usage 251 ECHO. 252 ECHO Usage: %~nx0 ^<processor^> 253 ECHO. 254 ECHO The only supported values for processor are "x86" and "x64". 255 GOTO errors 256 257:errors 258 CALL :fn_SetErrorLevel 259 ENDLOCAL 260 ECHO. 261 ECHO Failure, errors were encountered. 262 GOTO end_of_file 263 264:no_errors 265 CALL :fn_ResetErrorLevel 266 ENDLOCAL 267 ECHO. 268 ECHO Success, no errors were encountered. 269 GOTO end_of_file 270 271:end_of_file 272%__ECHO% EXIT /B %ERRORLEVEL% 273