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 "%%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" -o "%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 176GOTO no_errors 177 178:fn_TclKitX86Variables 179 IF NOT DEFINED TCLKIT_PATCHLEVEL ( 180 SET TCLKIT_PATCHLEVEL=8.6.4 181 ) 182 SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe 183 SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib 184 SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL% 185 SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip 186 SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP% 187 GOTO :EOF 188 189:fn_TclKitX64Variables 190 IF NOT DEFINED TCLKIT_PATCHLEVEL ( 191 REM 192 REM NOTE: By default, use latest available version of the TclKit SDK 193 REM for x64. However, the "default" TclKit executable for x86 194 REM is still used here because it is the only one "well-known" 195 REM to be available for download. 196 REM 197 SET TCLKIT_PATCHLEVEL=8.6.3 198 SET TCLKIT_EXE=tclkit-8.6.4.exe 199 ) ELSE ( 200 SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe 201 ) 202 SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib 203 SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL% 204 SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip 205 SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP% 206 GOTO :EOF 207 208:fn_UnquoteVariable 209 IF NOT DEFINED %1 GOTO :EOF 210 SETLOCAL 211 SET __ECHO_CMD=ECHO %%%1%% 212 FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO ( 213 SET VALUE=%%V 214 ) 215 SET VALUE=%VALUE:"=% 216 REM " 217 ENDLOCAL && SET %1=%VALUE% 218 GOTO :EOF 219 220:fn_ResetErrorLevel 221 VERIFY > NUL 222 GOTO :EOF 223 224:fn_SetErrorLevel 225 VERIFY MAYBE 2> NUL 226 GOTO :EOF 227 228:usage 229 ECHO. 230 ECHO Usage: %~nx0 ^<processor^> 231 ECHO. 232 ECHO The only supported values for processor are "x86" and "x64". 233 GOTO errors 234 235:errors 236 CALL :fn_SetErrorLevel 237 ENDLOCAL 238 ECHO. 239 ECHO Failure, errors were encountered. 240 GOTO end_of_file 241 242:no_errors 243 CALL :fn_ResetErrorLevel 244 ENDLOCAL 245 ECHO. 246 ECHO Success, no errors were encountered. 247 GOTO end_of_file 248 249:end_of_file 250%__ECHO% EXIT /B %ERRORLEVEL% 251