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