180372ae2Smistachkin@ECHO OFF 280372ae2Smistachkin 380372ae2Smistachkin:: 480372ae2Smistachkin:: GetTclKit.bat -- 580372ae2Smistachkin:: 680372ae2Smistachkin:: TclKit Download Tool 780372ae2Smistachkin:: 880372ae2Smistachkin 980372ae2SmistachkinSETLOCAL 1080372ae2Smistachkin 1180372ae2SmistachkinREM SET __ECHO=ECHO 1280372ae2SmistachkinREM SET __ECHO2=ECHO 1380372ae2SmistachkinREM SET __ECHO3=ECHO 1480372ae2SmistachkinIF NOT DEFINED _AECHO (SET _AECHO=REM) 1580372ae2SmistachkinIF NOT DEFINED _CECHO (SET _CECHO=REM) 16*f5e7691eSmistachkinIF NOT DEFINED _CECHO2 (SET _CECHO2=REM) 17*f5e7691eSmistachkinIF NOT DEFINED _CECHO3 (SET _CECHO3=REM) 1880372ae2SmistachkinIF NOT DEFINED _VECHO (SET _VECHO=REM) 1980372ae2Smistachkin 2080372ae2SmistachkinSET OVERWRITE=^> 2180372ae2SmistachkinIF DEFINED __ECHO SET OVERWRITE=^^^> 2280372ae2Smistachkin 2380372ae2SmistachkinSET APPEND=^>^> 2480372ae2SmistachkinIF DEFINED __ECHO SET APPEND=^^^>^^^> 2580372ae2Smistachkin 2680372ae2SmistachkinSET PROCESSOR=%1 2780372ae2Smistachkin 2880372ae2SmistachkinIF DEFINED PROCESSOR ( 2980372ae2Smistachkin CALL :fn_UnquoteVariable PROCESSOR 3080372ae2Smistachkin) ELSE ( 3180372ae2Smistachkin GOTO usage 3280372ae2Smistachkin) 3380372ae2Smistachkin 34334d163eSmistachkinSET PROCESSOR=%PROCESSOR:AMD64=x64% 35334d163eSmistachkin 3680372ae2Smistachkin%_VECHO% Processor = '%PROCESSOR%' 3780372ae2Smistachkin 3880372ae2SmistachkinSET DUMMY2=%2 3980372ae2Smistachkin 4080372ae2SmistachkinIF DEFINED DUMMY2 ( 4180372ae2Smistachkin GOTO usage 4280372ae2Smistachkin) 4380372ae2Smistachkin 44d5157e01SmistachkinIF NOT DEFINED ENVDIR ( 45d5157e01Smistachkin SET ENVDIR=%CD% 46d5157e01Smistachkin) 4780372ae2Smistachkin 48d5157e01Smistachkin%_VECHO% EnvDir = '%ENVDIR%' 4980372ae2Smistachkin 5080372ae2SmistachkinSET TOOLS=%~dp0 5180372ae2SmistachkinSET TOOLS=%TOOLS:~0,-1% 5280372ae2Smistachkin 5380372ae2Smistachkin%_VECHO% Tools = '%TOOLS%' 5480372ae2Smistachkin 5580372ae2SmistachkinIF NOT DEFINED windir ( 5680372ae2Smistachkin ECHO The windir environment variable must be set first. 5780372ae2Smistachkin GOTO errors 5880372ae2Smistachkin) 5980372ae2Smistachkin 6080372ae2Smistachkin%_VECHO% WinDir = '%windir%' 6180372ae2Smistachkin 6280372ae2SmistachkinIF NOT DEFINED TEMP ( 6380372ae2Smistachkin ECHO The TEMP environment variable must be set first. 6480372ae2Smistachkin GOTO errors 6580372ae2Smistachkin) 6680372ae2Smistachkin 6780372ae2Smistachkin%_VECHO% Temp = '%TEMP%' 6880372ae2Smistachkin 69dfff1ffeSmistachkinIF NOT DEFINED TCLKIT_URI ( 70d5157e01Smistachkin SET TCLKIT_URI=https://urn.to/r/tclsh/ 71dfff1ffeSmistachkin) 7280372ae2Smistachkin 7380372ae2Smistachkin%_VECHO% TclKitUri = '%TCLKIT_URI%' 7480372ae2Smistachkin 75d5157e01SmistachkinIF NOT DEFINED TCLKIT_PATCHLEVEL ( 76d5157e01Smistachkin SET TCLKIT_PATCHLEVEL=8.6.6 77d5157e01Smistachkin) 78d5157e01Smistachkin 79d5157e01Smistachkin%_VECHO% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%' 80d5157e01Smistachkin 81d5157e01SmistachkinIF NOT DEFINED TCLKIT_EXE_PATCHLEVEL ( 82d5157e01Smistachkin SET TCLKIT_EXE_PATCHLEVEL=8.6.4 83d5157e01Smistachkin) 84d5157e01Smistachkin 85d5157e01Smistachkin%_VECHO% TclKitExePatchLevel = '%TCLKIT_EXE_PATCHLEVEL%' 86d5157e01Smistachkin 8780372ae2SmistachkinIF /I "%PROCESSOR%" == "x86" ( 8880372ae2Smistachkin CALL :fn_TclKitX86Variables 89d5157e01Smistachkin 90d5157e01Smistachkin IF ERRORLEVEL 1 ( 91d5157e01Smistachkin GOTO errors 92d5157e01Smistachkin ) 9380372ae2Smistachkin) ELSE IF /I "%PROCESSOR%" == "x64" ( 9480372ae2Smistachkin CALL :fn_TclKitX64Variables 95d5157e01Smistachkin 96d5157e01Smistachkin IF ERRORLEVEL 1 ( 97d5157e01Smistachkin GOTO errors 98d5157e01Smistachkin ) 9980372ae2Smistachkin) ELSE ( 10080372ae2Smistachkin GOTO usage 10180372ae2Smistachkin) 10280372ae2Smistachkin 1035b66350aSmistachkin%_VECHO% TclKitVersion = '%TCLKIT_VERSION%' 10480372ae2Smistachkin%_VECHO% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%' 105d5157e01Smistachkin%_VECHO% TclKitExePatchLevel = '%TCLKIT_EXE_PATCHLEVEL%' 106598f7c59Smistachkin%_VECHO% TclKitNoEnv = '%TCLKIT_NOENV%' 10780372ae2Smistachkin%_VECHO% TclKitNoSdk = '%TCLKIT_NOSDK%' 10880372ae2Smistachkin%_VECHO% TclKitExe = '%TCLKIT_EXE%' 10980372ae2Smistachkin%_VECHO% TclKitLib = '%TCLKIT_LIB%' 1105b66350aSmistachkin%_VECHO% TclKitLibStub = '%TCLKIT_LIB_STUB%' 11180372ae2Smistachkin%_VECHO% TclKitSdk = '%TCLKIT_SDK%' 11280372ae2Smistachkin%_VECHO% TclKitSdkZip = '%TCLKIT_SDK_ZIP%' 11380372ae2Smistachkin%_VECHO% TclKitFiles = '%TCLKIT_FILES%' 11480372ae2Smistachkin 11580372ae2SmistachkinCALL :fn_ResetErrorLevel 11680372ae2Smistachkin 11780372ae2SmistachkinFOR %%T IN (csc.exe) DO ( 11880372ae2Smistachkin SET %%T_PATH=%%~dp$PATH:T 11980372ae2Smistachkin) 12080372ae2Smistachkin 12180372ae2Smistachkin%_VECHO% Csc.exe_PATH = '%csc.exe_PATH%' 12280372ae2Smistachkin 12380372ae2SmistachkinIF DEFINED csc.exe_PATH ( 12480372ae2Smistachkin GOTO skip_addToPath 12580372ae2Smistachkin) 12680372ae2Smistachkin 12780372ae2SmistachkinIF DEFINED FRAMEWORKDIR ( 12880372ae2Smistachkin REM Use the existing .NET Framework directory... 12980372ae2Smistachkin) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v2.0.50727" ( 13080372ae2Smistachkin SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v2.0.50727 13180372ae2Smistachkin) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v3.5" ( 13280372ae2Smistachkin SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v3.5 13380372ae2Smistachkin) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319" ( 13480372ae2Smistachkin SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v4.0.30319 13580372ae2Smistachkin) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v2.0.50727" ( 13680372ae2Smistachkin SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v2.0.50727 13780372ae2Smistachkin) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v3.5" ( 13880372ae2Smistachkin SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v3.5 13980372ae2Smistachkin) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319" ( 14080372ae2Smistachkin SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v4.0.30319 14180372ae2Smistachkin) ELSE ( 14280372ae2Smistachkin ECHO No suitable version of the .NET Framework appears to be installed. 14380372ae2Smistachkin GOTO errors 14480372ae2Smistachkin) 14580372ae2Smistachkin 14680372ae2Smistachkin%_VECHO% FrameworkDir = '%FRAMEWORKDIR%' 14780372ae2Smistachkin 14880372ae2SmistachkinIF NOT EXIST "%FRAMEWORKDIR%\csc.exe" ( 14980372ae2Smistachkin ECHO The file "%FRAMEWORKDIR%\csc.exe" is missing. 15080372ae2Smistachkin GOTO errors 15180372ae2Smistachkin) 15280372ae2Smistachkin 1536e5688d3SmistachkinCALL :fn_PrependToPath FRAMEWORKDIR 15480372ae2Smistachkin 15580372ae2Smistachkin:skip_addToPath 15680372ae2Smistachkin 1575b66350aSmistachkinIF NOT EXIST "%TEMP%\GetFile.exe" ( 15880372ae2Smistachkin %__ECHO% csc.exe "/out:%TEMP%\GetFile.exe" /target:exe "%TOOLS%\GetFile.cs" 15980372ae2Smistachkin 16080372ae2Smistachkin IF ERRORLEVEL 1 ( 16180372ae2Smistachkin ECHO Compilation of "%TOOLS%\GetFile.cs" failed. 16280372ae2Smistachkin GOTO errors 16380372ae2Smistachkin ) 1645b66350aSmistachkin) 16580372ae2Smistachkin 16680372ae2SmistachkinFOR %%F IN (%TCLKIT_FILES%) DO ( 167cc730488Smistachkin IF NOT EXIST "%TEMP%\%%F" ( 16880372ae2Smistachkin %__ECHO% "%TEMP%\GetFile.exe" "%TCLKIT_URI%%%F" 16980372ae2Smistachkin 17080372ae2Smistachkin IF ERRORLEVEL 1 ( 17180372ae2Smistachkin ECHO Download of "%%F" from "%TCLKIT_URI%" failed. 17280372ae2Smistachkin GOTO errors 17380372ae2Smistachkin ) 17480372ae2Smistachkin ) 17580372ae2Smistachkin) 17680372ae2Smistachkin 177598f7c59SmistachkinIF DEFINED TCLKIT_NOENV GOTO skip_sdkUnZip 17880372ae2SmistachkinIF DEFINED TCLKIT_NOSDK GOTO skip_sdkUnZip 17980372ae2Smistachkin 18080372ae2SmistachkinIF NOT EXIST "%TEMP%\%TCLKIT_SDK%" ( 18180372ae2Smistachkin %__ECHO% MKDIR "%TEMP%\%TCLKIT_SDK%" 18280372ae2Smistachkin 18380372ae2Smistachkin IF ERRORLEVEL 1 ( 18480372ae2Smistachkin ECHO Could not create directory "%TEMP%\%TCLKIT_SDK%". 18580372ae2Smistachkin GOTO errors 18680372ae2Smistachkin ) 18780372ae2Smistachkin) 18880372ae2Smistachkin 189cc730488Smistachkin%__ECHO% "%TEMP%\unzip.exe" -n "%TEMP%\%TCLKIT_SDK_ZIP%" -d "%TEMP%\%TCLKIT_SDK%" 19080372ae2Smistachkin 19180372ae2SmistachkinIF ERRORLEVEL 1 ( 19280372ae2Smistachkin ECHO Could not unzip "%TEMP%\%TCLKIT_SDK_ZIP%" to "%TEMP%\%TCLKIT_SDK%". 19380372ae2Smistachkin GOTO errors 19480372ae2Smistachkin) 19580372ae2Smistachkin 19680372ae2Smistachkin:skip_sdkUnZip 19780372ae2Smistachkin 198598f7c59SmistachkinIF DEFINED TCLKIT_NOENV GOTO skip_sdkEnvironment 199598f7c59Smistachkin 200d5157e01Smistachkin%__ECHO% ECHO SET TCLSH_CMD=%TEMP%\%TCLKIT_EXE%%OVERWRITE%"%ENVDIR%\SetTclKitEnv.bat" 20180372ae2Smistachkin 20280372ae2SmistachkinIF DEFINED TCLKIT_NOSDK GOTO skip_sdkVariables 20380372ae2Smistachkin 204d5157e01Smistachkin%__ECHO% ECHO SET TCLINCDIR=%TEMP%\%TCLKIT_SDK%\include%APPEND%"%ENVDIR%\SetTclKitEnv.bat" 205d5157e01Smistachkin%__ECHO% ECHO SET TCLLIBDIR=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ENVDIR%\SetTclKitEnv.bat" 206d5157e01Smistachkin%__ECHO% ECHO SET LIBTCLPATH=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ENVDIR%\SetTclKitEnv.bat" 207d5157e01Smistachkin%__ECHO% ECHO SET LIBTCL=%TCLKIT_LIB%%APPEND%"%ENVDIR%\SetTclKitEnv.bat" 208d5157e01Smistachkin%__ECHO% ECHO SET LIBTCLSTUB=%TCLKIT_LIB_STUB%%APPEND%"%ENVDIR%\SetTclKitEnv.bat" 20980372ae2Smistachkin 21080372ae2Smistachkin:skip_sdkVariables 21180372ae2Smistachkin 212cc730488SmistachkinECHO. 213d5157e01SmistachkinECHO Wrote "%ENVDIR%\SetTclKitEnv.bat". 214cc730488SmistachkinECHO Please run it to set the necessary Tcl environment variables. 215cc730488SmistachkinECHO. 216cc730488Smistachkin 217598f7c59Smistachkin:skip_sdkEnvironment 218598f7c59Smistachkin 21980372ae2SmistachkinGOTO no_errors 22080372ae2Smistachkin 22180372ae2Smistachkin:fn_TclKitX86Variables 2227751deb3Smistachkin REM 2237751deb3Smistachkin REM NOTE: By default, use latest available version of the TclKit SDK 2247751deb3Smistachkin REM for x86. However, the "default" TclKit executable for x86 2257751deb3Smistachkin REM is still used here because it is the only one "well-known" 2267751deb3Smistachkin REM to be available for download. 2277751deb3Smistachkin REM 22880372ae2Smistachkin IF NOT DEFINED TCLKIT_PATCHLEVEL ( 229d5157e01Smistachkin ECHO The TCLKIT_PATCHLEVEL environment variable must be set first. 230d5157e01Smistachkin CALL :fn_SetErrorLevel 231d5157e01Smistachkin GOTO :EOF 23280372ae2Smistachkin ) 2335b66350aSmistachkin SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=% 2345b66350aSmistachkin SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2% 235d5157e01Smistachkin IF DEFINED TCLKIT_EXE_PATCHLEVEL ( 236d5157e01Smistachkin SET TCLKIT_EXE=tclkit-%TCLKIT_EXE_PATCHLEVEL%.exe 237d5157e01Smistachkin ) ELSE ( 238d5157e01Smistachkin SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe 239d5157e01Smistachkin ) 24080372ae2Smistachkin SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib 2415b66350aSmistachkin SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a 24280372ae2Smistachkin SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL% 24380372ae2Smistachkin SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip 244cf9fb7ebSmistachkin SET TCLKIT_FILES=%TCLKIT_EXE% 245598f7c59Smistachkin IF NOT DEFINED TCLKIT_NOENV IF NOT DEFINED TCLKIT_NOSDK ( 246cf9fb7ebSmistachkin SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP% 247cf9fb7ebSmistachkin ) 24880372ae2Smistachkin GOTO :EOF 24980372ae2Smistachkin 25080372ae2Smistachkin:fn_TclKitX64Variables 25180372ae2Smistachkin REM 25280372ae2Smistachkin REM NOTE: By default, use latest available version of the TclKit SDK 25380372ae2Smistachkin REM for x64. However, the "default" TclKit executable for x86 25480372ae2Smistachkin REM is still used here because it is the only one "well-known" 25580372ae2Smistachkin REM to be available for download. 25680372ae2Smistachkin REM 2577751deb3Smistachkin IF NOT DEFINED TCLKIT_PATCHLEVEL ( 258d5157e01Smistachkin ECHO The TCLKIT_PATCHLEVEL environment variable must be set first. 259d5157e01Smistachkin CALL :fn_SetErrorLevel 260d5157e01Smistachkin GOTO :EOF 26180372ae2Smistachkin ) 2625b66350aSmistachkin SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=% 2635b66350aSmistachkin SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2% 264d5157e01Smistachkin IF DEFINED TCLKIT_EXE_PATCHLEVEL ( 265d5157e01Smistachkin SET TCLKIT_EXE=tclkit-%TCLKIT_EXE_PATCHLEVEL%.exe 266d5157e01Smistachkin ) ELSE ( 267d5157e01Smistachkin SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe 268d5157e01Smistachkin ) 26980372ae2Smistachkin SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib 2705b66350aSmistachkin SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a 27180372ae2Smistachkin SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL% 27280372ae2Smistachkin SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip 273cf9fb7ebSmistachkin SET TCLKIT_FILES=%TCLKIT_EXE% 274598f7c59Smistachkin IF NOT DEFINED TCLKIT_NOENV IF NOT DEFINED TCLKIT_NOSDK ( 275cf9fb7ebSmistachkin SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP% 276cf9fb7ebSmistachkin ) 27780372ae2Smistachkin GOTO :EOF 27880372ae2Smistachkin 27980372ae2Smistachkin:fn_UnquoteVariable 28080372ae2Smistachkin IF NOT DEFINED %1 GOTO :EOF 28180372ae2Smistachkin SETLOCAL 28280372ae2Smistachkin SET __ECHO_CMD=ECHO %%%1%% 28380372ae2Smistachkin FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO ( 28480372ae2Smistachkin SET VALUE=%%V 28580372ae2Smistachkin ) 28680372ae2Smistachkin SET VALUE=%VALUE:"=% 28780372ae2Smistachkin REM " 28880372ae2Smistachkin ENDLOCAL && SET %1=%VALUE% 28980372ae2Smistachkin GOTO :EOF 29080372ae2Smistachkin 2916e5688d3Smistachkin:fn_PrependToPath 2926e5688d3Smistachkin IF NOT DEFINED %1 GOTO :EOF 2936e5688d3Smistachkin SETLOCAL 2946e5688d3Smistachkin SET __ECHO_CMD=ECHO %%%1%% 2956e5688d3Smistachkin FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO ( 2966e5688d3Smistachkin SET VALUE=%%V 2976e5688d3Smistachkin ) 2986e5688d3Smistachkin SET VALUE=%VALUE:"=% 2996e5688d3Smistachkin REM " 3006e5688d3Smistachkin ENDLOCAL && SET PATH=%VALUE%;%PATH% 3016e5688d3Smistachkin GOTO :EOF 3026e5688d3Smistachkin 30380372ae2Smistachkin:fn_ResetErrorLevel 30480372ae2Smistachkin VERIFY > NUL 30580372ae2Smistachkin GOTO :EOF 30680372ae2Smistachkin 30780372ae2Smistachkin:fn_SetErrorLevel 30880372ae2Smistachkin VERIFY MAYBE 2> NUL 30980372ae2Smistachkin GOTO :EOF 31080372ae2Smistachkin 31180372ae2Smistachkin:usage 31280372ae2Smistachkin ECHO. 31380372ae2Smistachkin ECHO Usage: %~nx0 ^<processor^> 31480372ae2Smistachkin ECHO. 31580372ae2Smistachkin ECHO The only supported values for processor are "x86" and "x64". 31680372ae2Smistachkin GOTO errors 31780372ae2Smistachkin 31880372ae2Smistachkin:errors 31980372ae2Smistachkin CALL :fn_SetErrorLevel 32080372ae2Smistachkin ENDLOCAL 32180372ae2Smistachkin ECHO. 32280372ae2Smistachkin ECHO Failure, errors were encountered. 32380372ae2Smistachkin GOTO end_of_file 32480372ae2Smistachkin 32580372ae2Smistachkin:no_errors 32680372ae2Smistachkin CALL :fn_ResetErrorLevel 32780372ae2Smistachkin ENDLOCAL 32880372ae2Smistachkin ECHO. 32980372ae2Smistachkin ECHO Success, no errors were encountered. 33080372ae2Smistachkin GOTO end_of_file 33180372ae2Smistachkin 33280372ae2Smistachkin:end_of_file 33380372ae2Smistachkin%__ECHO% EXIT /B %ERRORLEVEL% 334