Advertisement
FoddEx

AT_AutoUpdate

Jul 15th, 2018
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 6.90 KB | None | 0 0
  1. @echo off
  2.  
  3. ::     _________________________________
  4. ::    | AdminToolbox Auto Updater v1.10 |
  5. ::    |               B y               |
  6. ::    |         Tam / @Tam#1111         |
  7. ::    |    Last updated   31.05.2019    |
  8. ::    |_________________________________|
  9.  
  10. set discNick=@Tam#1111
  11. if "%~1"=="" (
  12.     prompt $_CRASHED - Unhandled exception ^(%errorlevel%^). Send above info to Discord user %discNick%.
  13.     start /w /b "" "%~f0" _
  14.     ver
  15.     exit
  16. )
  17. :main
  18. setlocal enabledelayedexpansion
  19. set v=1.10
  20. title AdminToolbox Updater v!v!
  21. set "scp_appdata=%appdata%\SCP Secret Laboratory"
  22. for /f "usebackq tokens=1,* delims== eol=; skip=250" %%A in ("%~f0") do (
  23.     if "%%A"=="TargetDir" (
  24.         if "%%B"=="?DEFAULT" (
  25.             set "%%A=%~dp0"
  26.         ) else (
  27.             if not exist "%%B" (
  28.                 echo  CONFIG ERROR: The value in 'TargetDir' points to an invalid location.
  29.                 echo  Details: %%B
  30.                 echo  Verify the path and retry.
  31.                 pause > nul
  32.                 exit
  33.             ) else (
  34.                 set "%%A=%%B"
  35.             )
  36.         )
  37.     ) else (
  38.         set "%%A=%%B"
  39.     )
  40. )
  41. if not defined TargetDir (
  42.     echo TargetDir undefined, check config.
  43.     exit /b
  44. )
  45. cd /d "!TargetDir!"
  46. cls
  47. color 0A
  48. echo.
  49. echo *** AdminToolbox Auto Updater v!v! ***
  50. echo                   By
  51. echo           Tam / !discNick!
  52. timeout /t 2 > nul
  53. cls & color 0F
  54. echo.
  55. if exist "SCPSL.exe" (
  56.     if not exist "SCPSL_Data\Managed\Smod2.dll" (
  57.         echo  Couldn't detect SMod.
  58.         echo  Make sure that SMod is correctly installed.
  59.         pause > nul
  60.         endlocal
  61.         exit
  62.     )
  63. ) else (
  64.     echo  Error
  65.     echo.
  66.     echo  "I have no memory of this place..."
  67.     echo                      - Gandalf, 2069
  68.     echo  ^('!TargetDir!' is probably not the correct location^)
  69.     echo.
  70.     echo  %~n0 is not running from the SCP:SL server root.
  71.     echo  Place in the correct location or change the config and retry.
  72.     pause > nul
  73.     endlocal
  74.     exit
  75. )
  76. echo  Checking download capabilities...
  77. if not exist "!SYSTEMROOT!\System32\curl.exe" (
  78.     echo      cURL not detected. Attempting to select BITS + PowerShell...
  79.     for /f "skip=3 tokens=2 delims=:" %%A in ('powershell -command "get-host"') do (
  80.         set /a n=!n!+1
  81.         set c=%%A
  82.         if !n!==1 set PSversion=!c!
  83.     )
  84.     set PSversion=!PSversion: =!
  85.     for /f "tokens=1 delims=." %%A in ("!PSversion!") do (
  86.         if %%A LSS 3 (
  87.             echo          Error. The required PowerShell cmdlet is unavailable.
  88.             echo          Please install cURL or PowerShell 3.0 or higher.
  89.             pause > nul
  90.             endlocal
  91.             exit
  92.         )
  93.     )
  94.     echo          Success.
  95.     set useCurl=0
  96.     set dlMethod=BITS
  97.     set dlMethod2=PowerShell
  98. ) else (
  99.     echo      cURL detected and selected.
  100.     set useCurl=1
  101.     set dlMethod=cURL
  102.     set dlMethod2=cURL
  103. )
  104. echo.
  105. echo  Downloading version data using !dlMethod!...
  106. if exist "!scp_appdata!\n_at_version.md" (
  107.     del /q "!scp_appdata!\n_at_version.md" > nul
  108. )
  109. if !useCurl!==1 (
  110.     curl -s --tlsv1.2 --connect-timeout 10 --output "!scp_appdata!\n_at_version.md" "https://raw.githubusercontent.com/Rnen/AdminToolbox/master/version.md"
  111.     if not exist "!scp_appdata!\n_at_version.md" (
  112.         echo      Download failed.
  113.         echo.
  114.         echo      Press any key to retry.
  115.         pause > nul
  116.         endlocal
  117.         goto :main
  118.     )
  119. ) else (
  120.     bitsadmin /create /download "at_version" > nul
  121.     bitsadmin /setnoprogresstimeout "at_version" 10 > nul
  122.     bitsadmin /transfer "at_version" "https://raw.githubusercontent.com/Rnen/AdminToolbox/master/version.md" "!scp_appdata!\n_at_version.md" > nul
  123.     if !errorlevel!==0 (
  124.         bitsadmin /complete "at_version" > nul
  125.     ) else (
  126.         echo      Download failed.
  127.         echo  [BITS returned ERRORLEVEL !errorlevel!]
  128.         echo.
  129.         echo      Press any key to retry.
  130.         pause > nul
  131.         bitsadmin /complete "at_version" > nul
  132.         endlocal
  133.         goto :main
  134.     )
  135.     if not exist "!scp_appdata!\n_at_version.md" (
  136.         echo      Download failed.
  137.         echo      [BITS completed with no file output]
  138.         echo.
  139.         echo      Press any key to retry.
  140.         pause > nul
  141.         endlocal
  142.         goto :main
  143.     )
  144. )
  145. echo     Done.
  146. echo.
  147. echo  Parsing version data...
  148. for /f "usebackq tokens=2 delims==" %%A in ("!scp_appdata!\n_at_version.md") do (
  149.     for /f "tokens=1-3 delims=." %%B in ("%%A") do (
  150.         set catch=0
  151.         if "%%B"=="" set catch=1
  152.         if "%%C"=="" set catch=1
  153.         if "%%D"=="" set catch=1
  154.         if !catch!==1 (
  155.             echo      Error while parsing GitHub version data.
  156.             echo      [n_at_version.md data is invalid.]
  157.             echo.
  158.             echo      Press any key to exit.
  159.             pause > nul
  160.             endlocal
  161.             exit
  162.         )
  163.     )
  164.     set "at_version=%%A"
  165.     set _at_version=!at_version:.=!
  166. )
  167. if not exist "sm_plugins\AdminToolbox.dll" (
  168.     set _local_version=-9999
  169.     set "local_version=Not installed"
  170.     goto :dataParseSkip
  171. )
  172. if exist "!scp_appdata!\at_version.md" (
  173.     for /f "usebackq tokens=2 delims==" %%A in ("!scp_appdata!\at_version.md") do (
  174.         set "local_version=%%A"
  175.         set _local_version=!local_version:.=!
  176.     )
  177. ) else (
  178.     echo     No local version data found.
  179.     echo.
  180.     echo  Press any key to force update.
  181.     pause > nul
  182.     goto :update
  183. )
  184. echo     Done.
  185. :dataParseSkip
  186. echo.
  187. if !_local_version! LSS !_at_version! (
  188.     echo.
  189.     echo  A newer version of AdminToolbox is available.
  190.     echo.
  191.     echo  Your version: !local_version!
  192.     echo  New version:  !at_version!
  193.     echo.
  194.     echo  Press any key to download.
  195.     pause > nul
  196.     goto :update
  197. ) else (
  198.     echo.
  199.     echo  Your AdminToolbox is up to date. ^(Local: v!local_version!   Online: v!at_version!^)
  200.     echo.
  201.     echo  Press any key to force update.
  202.     pause > nul
  203.     goto :update
  204. )
  205. :update
  206. cls
  207. echo  Preparing download...
  208. tasklist /fi "IMAGENAME eq SCPSL.exe" | find /i "SCPSL.exe" > nul
  209. if !errorlevel!==0 (
  210.     echo.
  211.     echo  Cannot download while SCP:SL is running.
  212.     echo  Exit SCP:SL or shut down SL servers and retry.
  213.     echo  Press any key to retry.
  214.     pause > nul
  215.     goto :update
  216. )
  217. ping -n 1 github.com > nul
  218. if not !errorlevel!==0 (
  219.     echo  Unable to connect.
  220.     echo  [PING returned ERRORLEVEL !errorlevel!]
  221.     echo.
  222.     echo  Press any key to retry.
  223.     pause > nul
  224.     goto :update
  225. )
  226. set "link=https://github.com/Rnen/AdminToolbox/releases/download/!at_version!/AdminToolbox.dll"
  227. echo  Downloading AdminToolbox using !dlMethod2!...
  228. if !useCurl!==1 (
  229.     curl -s --tlsv1.2 --connect-timeout 10 --output "sm_plugins\AdminToolbox.dll" "!link!"
  230. ) else (
  231.     powershell -command "& { $tls12 = [Enum]::ToObject([Net.SecurityProtocolType], 3072); [Net.ServicePointManager]::SecurityProtocol = $tls12; (New-Object Net.WebClient).DownloadFile('!link!', 'sm_plugins\AdminToolbox.dll') }"
  232. )
  233. if exist "sm_plugins\AdminToolbox.dll" (
  234.     echo.at_version=!at_version!>"!scp_appdata!\at_version.md"
  235.     echo  Done.
  236.     echo  Now running v!at_version!
  237. ) else (
  238.     echo  Download failed.
  239.     echo.
  240.     echo  Press any key to retry.
  241.     pause > nul
  242.     goto :update
  243. )
  244. echo.
  245. echo.
  246. echo  Press any key to exit
  247. pause > nul
  248. endlocal
  249. exit
  250.  
  251. ;CONFIGURATION
  252. ;------------------------------------------------------------------------
  253. ;; TargetDir - Specifies the server root directory, e.g. C:\SCPSL_server\
  254. ;; You may leave the setting at "?DEFAULT" if the script is already placed in the server root directory
  255. TargetDir=C:\SCPSL\
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement