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% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%' 79%_VECHO% TclKitNoSdk = '%TCLKIT_NOSDK%' 80%_VECHO% TclKitExe = '%TCLKIT_EXE%' 81%_VECHO% TclKitLib = '%TCLKIT_LIB%' 82%_VECHO% TclKitSdk = '%TCLKIT_SDK%' 83%_VECHO% TclKitSdkZip = '%TCLKIT_SDK_ZIP%' 84%_VECHO% TclKitFiles = '%TCLKIT_FILES%' 85 86CALL :fn_ResetErrorLevel 87 88FOR %%T IN (csc.exe) DO ( 89 SET %%T_PATH=%%~dp$PATH:T 90) 91 92%_VECHO% Csc.exe_PATH = '%csc.exe_PATH%' 93 94IF DEFINED csc.exe_PATH ( 95 GOTO skip_addToPath 96) 97 98IF DEFINED FRAMEWORKDIR ( 99 REM Use the existing .NET Framework directory... 100) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v2.0.50727" ( 101 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v2.0.50727 102) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v3.5" ( 103 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v3.5 104) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319" ( 105 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v4.0.30319 106) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v2.0.50727" ( 107 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v2.0.50727 108) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v3.5" ( 109 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v3.5 110) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319" ( 111 SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v4.0.30319 112) ELSE ( 113 ECHO No suitable version of the .NET Framework appears to be installed. 114 GOTO errors 115) 116 117%_VECHO% FrameworkDir = '%FRAMEWORKDIR%' 118 119IF NOT EXIST "%FRAMEWORKDIR%\csc.exe" ( 120 ECHO The file "%FRAMEWORKDIR%\csc.exe" is missing. 121 GOTO errors 122) 123 124SET PATH=%FRAMEWORKDIR%;%PATH% 125 126:skip_addToPath 127 128%__ECHO% csc.exe "/out:%TEMP%\GetFile.exe" /target:exe "%TOOLS%\GetFile.cs" 129 130IF ERRORLEVEL 1 ( 131 ECHO Compilation of "%TOOLS%\GetFile.cs" failed. 132 GOTO errors 133) 134 135FOR %%F IN (%TCLKIT_FILES%) DO ( 136 IF NOT EXIST "%TEMP%\%%F" ( 137 %__ECHO% "%TEMP%\GetFile.exe" "%TCLKIT_URI%%%F" 138 139 IF ERRORLEVEL 1 ( 140 ECHO Download of "%%F" from "%TCLKIT_URI%" failed. 141 GOTO errors 142 ) 143 ) 144) 145 146IF DEFINED TCLKIT_NOSDK GOTO skip_sdkUnZip 147 148IF NOT EXIST "%TEMP%\%TCLKIT_SDK%" ( 149 %__ECHO% MKDIR "%TEMP%\%TCLKIT_SDK%" 150 151 IF ERRORLEVEL 1 ( 152 ECHO Could not create directory "%TEMP%\%TCLKIT_SDK%". 153 GOTO errors 154 ) 155) 156 157%__ECHO% "%TEMP%\unzip.exe" -n "%TEMP%\%TCLKIT_SDK_ZIP%" -d "%TEMP%\%TCLKIT_SDK%" 158 159IF ERRORLEVEL 1 ( 160 ECHO Could not unzip "%TEMP%\%TCLKIT_SDK_ZIP%" to "%TEMP%\%TCLKIT_SDK%". 161 GOTO errors 162) 163 164:skip_sdkUnZip 165 166%__ECHO% ECHO SET TCLSH_CMD=%TEMP%\%TCLKIT_EXE%%OVERWRITE%"%ROOT%\SetTclKitEnv.bat" 167 168IF DEFINED TCLKIT_NOSDK GOTO skip_sdkVariables 169 170%__ECHO% ECHO SET TCLINCDIR=%TEMP%\%TCLKIT_SDK%\include%APPEND%"%ROOT%\SetTclKitEnv.bat" 171%__ECHO% ECHO SET TCLLIBDIR=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ROOT%\SetTclKitEnv.bat" 172%__ECHO% ECHO SET LIBTCL=%TCLKIT_LIB%%APPEND%"%ROOT%\SetTclKitEnv.bat" 173 174:skip_sdkVariables 175 176ECHO. 177ECHO Wrote "%ROOT%\SetTclKitEnv.bat". 178ECHO Please run it to set the necessary Tcl environment variables. 179ECHO. 180 181GOTO no_errors 182 183:fn_TclKitX86Variables 184 IF NOT DEFINED TCLKIT_PATCHLEVEL ( 185 SET TCLKIT_PATCHLEVEL=8.6.4 186 ) 187 SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe 188 SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib 189 SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL% 190 SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip 191 SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP% 192 GOTO :EOF 193 194:fn_TclKitX64Variables 195 IF NOT DEFINED TCLKIT_PATCHLEVEL ( 196 REM 197 REM NOTE: By default, use latest available version of the TclKit SDK 198 REM for x64. However, the "default" TclKit executable for x86 199 REM is still used here because it is the only one "well-known" 200 REM to be available for download. 201 REM 202 SET TCLKIT_PATCHLEVEL=8.6.3 203 SET TCLKIT_EXE=tclkit-8.6.4.exe 204 ) ELSE ( 205 SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe 206 ) 207 SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib 208 SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL% 209 SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip 210 SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP% 211 GOTO :EOF 212 213:fn_UnquoteVariable 214 IF NOT DEFINED %1 GOTO :EOF 215 SETLOCAL 216 SET __ECHO_CMD=ECHO %%%1%% 217 FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO ( 218 SET VALUE=%%V 219 ) 220 SET VALUE=%VALUE:"=% 221 REM " 222 ENDLOCAL && SET %1=%VALUE% 223 GOTO :EOF 224 225:fn_ResetErrorLevel 226 VERIFY > NUL 227 GOTO :EOF 228 229:fn_SetErrorLevel 230 VERIFY MAYBE 2> NUL 231 GOTO :EOF 232 233:usage 234 ECHO. 235 ECHO Usage: %~nx0 ^<processor^> 236 ECHO. 237 ECHO The only supported values for processor are "x86" and "x64". 238 GOTO errors 239 240:errors 241 CALL :fn_SetErrorLevel 242 ENDLOCAL 243 ECHO. 244 ECHO Failure, errors were encountered. 245 GOTO end_of_file 246 247:no_errors 248 CALL :fn_ResetErrorLevel 249 ENDLOCAL 250 ECHO. 251 ECHO Success, no errors were encountered. 252 GOTO end_of_file 253 254:end_of_file 255%__ECHO% EXIT /B %ERRORLEVEL% 256