Update autoupdate.bat

add: check if installed termsrv.dll fileversion is different to the last saved termsrv.dll fileversion in registry; it detects all termsrv.dll version changes (for example from a windows update)
This commit is contained in:
asmtron 2019-08-12 14:57:35 +00:00 committed by GitHub
parent ee21028860
commit 18fe09e182
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 47 additions and 16 deletions

View File

@ -7,7 +7,7 @@ REM -------------------------------------------------------------------
REM REM
REM autoupdate.bat REM autoupdate.bat
REM REM
REM Automatic RDP Wrapper installer and updater // asmtron (12-08-2019) REM Automatic RDP Wrapper installer and updater // asmtron (13-08-2019)
REM ------------------------------------------------------------------- REM -------------------------------------------------------------------
REM Options: REM Options:
REM -log = redirect display output to the file autoupdate.log REM -log = redirect display output to the file autoupdate.log
@ -67,7 +67,7 @@ if /i "%~1"=="-taskremove" (
) )
if /i not "%~1"=="" ( if /i not "%~1"=="" (
echo [x] Unknown argument specified: "%~1" echo [x] Unknown argument specified: "%~1"
echo [~] Supported argments/options are: echo [*] Supported argments/options are:
echo -log = redirect display output to the file autoupdate.log echo -log = redirect display output to the file autoupdate.log
echo -taskadd = add autorun of autoupdate.bat on startup in the schedule task echo -taskadd = add autorun of autoupdate.bat on startup in the schedule task
echo -taskremove = remove autorun of autoupdate.bat on startup in the schedule task echo -taskremove = remove autorun of autoupdate.bat on startup in the schedule task
@ -106,7 +106,9 @@ reg query HKLM\SYSTEM\CurrentControlSet\Services\TermService\Parameters /f "rdpw
echo [+] Found windows registry entry for "rdpwrap.dll". echo [+] Found windows registry entry for "rdpwrap.dll".
)||( )||(
echo [-] NOT found windows registry entry for "rdpwrap.dll"! echo [-] NOT found windows registry entry for "rdpwrap.dll"!
call :install if %rdpwrap_installed%=="0" (
call :install
)
) )
REM ------------------------------ REM ------------------------------
REM 3) check if rdpwrap.ini exists REM 3) check if rdpwrap.ini exists
@ -115,23 +117,52 @@ if exist %rdpwrap_ini% (
echo [+] Found file: %rdpwrap_ini% echo [+] Found file: %rdpwrap_ini%
) else ( ) else (
echo [-] File NOT found: %rdpwrap_ini%! echo [-] File NOT found: %rdpwrap_ini%!
call :install if %rdpwrap_installed%=="0" (
call :install
)
) )
REM --------------------------------------------------------------- REM ---------------------------------------------------------------
REM 4) check if installed termsrv.dll version exists in rdpwrap.ini REM 4) get file version of %windir%\System32\termsrv.dll
REM --------------------------------------------------------------- REM ---------------------------------------------------------------
:check_update
for /f "tokens=* usebackq" %%a in ( for /f "tokens=* usebackq" %%a in (
`cscript //nologo "%~f0?.wsf" //job:fileVersion %windir%\System32\termsrv.dll` `cscript //nologo "%~f0?.wsf" //job:fileVersion %windir%\System32\termsrv.dll`
) do ( ) do (
set "termsrv_dll_ver=%%a" set termsrv_dll_ver=%%a
) )
echo [+] Installed "termsrv.dll" version: %termsrv_dll_ver% if "%termsrv_dll_ver%"=="" (
echo [x] Error on getting the file version of %windir%\System32\termsrv.dll
goto :finish
) else (
echo [+] Installed "termsrv.dll" version: %termsrv_dll_ver%
)
REM ----------------------------------------------------------------------------------------
REM 5) check if installed fileversion is different to the last saved fileversion in registry
REM ----------------------------------------------------------------------------------------
echo [*] Read last "termsrv.dll" version from the windows registry...
for /f "tokens=2*" %%a in (
'reg query "HKEY_LOCAL_MACHINE\SOFTWARE\RDP-Wrapper\Autoupdate" /v "termsrv.dll" 2^>nul'
) do (
set last_termsrv_dll_ver=%%b
)
if "%last_termsrv_dll_ver%"=="%termsrv_dll_ver%" (
echo [+] Current "termsrv.dll v.%termsrv_dll_ver%" same as last "termsrv.dll v.%last_termsrv_dll_ver%"
) else (
echo [-] Current "termsrv.dll v.%termsrv_dll_ver%" different from last "termsrv.dll v.%last_termsrv_dll_ver%"!
echo [*] Update current "termsrv.dll" version to the windows registry...
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\RDP-Wrapper\Autoupdate" /v "termsrv.dll" /t REG_SZ /d "%termsrv_dll_ver%" /f
if %rdpwrap_installed%=="0" (
call :install
)
)
REM ---------------------------------------------------------------
REM 6) check if installed termsrv.dll version exists in rdpwrap.ini
REM ---------------------------------------------------------------
:check_update
if exist %rdpwrap_ini_check% ( if exist %rdpwrap_ini_check% (
echo [~] Start searching [%termsrv_dll_ver%] version entry in file %rdpwrap_ini_check% ... echo [*] Start searching [%termsrv_dll_ver%] version entry in file %rdpwrap_ini_check% ...
findstr /c:"[%termsrv_dll_ver%]" %rdpwrap_ini_check% >nul&&( findstr /c:"[%termsrv_dll_ver%]" %rdpwrap_ini_check% >nul&&(
echo [+] Found "termsrv.dll" version entry [%termsrv_dll_ver%] in file %rdpwrap_ini_check% echo [+] Found "termsrv.dll" version entry [%termsrv_dll_ver%] in file %rdpwrap_ini_check%
echo [~] RDP-Wrapper seems to be up-to-date and working... echo [*] RDP-Wrapper seems to be up-to-date and working...
)||( )||(
echo [-] NOT found "termsrv.dll" version entry [%termsrv_dll_ver%] in file %rdpwrap_ini_check%! echo [-] NOT found "termsrv.dll" version entry [%termsrv_dll_ver%] in file %rdpwrap_ini_check%!
if not "!rdpwrap_ini_update_github_%github_location%!" == "" ( if not "!rdpwrap_ini_update_github_%github_location%!" == "" (
@ -143,7 +174,7 @@ if exist %rdpwrap_ini_check% (
) )
) else ( ) else (
echo [-] File NOT found: %rdpwrap_ini_check% echo [-] File NOT found: %rdpwrap_ini_check%
echo [~] Give up - Please check if Antivirus/Firewall blocks the file %rdpwrap_ini_check%! echo [*] Give up - Please check if Antivirus/Firewall blocks the file %rdpwrap_ini_check%!
goto :finish goto :finish
) )
goto :finish goto :finish
@ -153,7 +184,7 @@ REM Install RDP Wrapper (exactly uninstall and reinstall)
REM ----------------------------------------------------- REM -----------------------------------------------------
:install :install
echo. echo.
echo [~] Uninstall and reinstall RDP Wrapper ... echo [*] Uninstall and reinstall RDP Wrapper ...
echo. echo.
set rdpwrap_installed="1" set rdpwrap_installed="1"
%RDPWInst_exe% -u %RDPWInst_exe% -u
@ -168,11 +199,11 @@ if %rdpwrap_installed%=="0" (
call :install call :install
) )
if exist %rdpwrap_new_ini% ( if exist %rdpwrap_new_ini% (
echo [~] Start copy %rdpwrap_new_ini% to %rdpwrap_ini% ... echo [*] Start copy %rdpwrap_new_ini% to %rdpwrap_ini% ...
copy /y %rdpwrap_new_ini% %rdpwrap_ini% copy /y %rdpwrap_new_ini% %rdpwrap_ini%
) )
echo. echo.
echo [~] Restart RDP Wrapper ... echo [*] Restart RDP Wrapper ...
echo. echo.
%RDPWInst_exe% -r %RDPWInst_exe% -r
goto :eof goto :eof
@ -183,7 +214,7 @@ REM --------------------------------------------------------------------
:update :update
set /a github_location=github_location+1 set /a github_location=github_location+1
echo. echo.
echo [~] Download latest version of rdpwrap.ini from GitHub echo [*] Download latest version of rdpwrap.ini from GitHub
echo -^> %rdpwrap_ini_url% echo -^> %rdpwrap_ini_url%
for /f "tokens=* usebackq" %%a in ( for /f "tokens=* usebackq" %%a in (
`cscript //nologo "%~f0?.wsf" //job:fileDownload %rdpwrap_ini_url% %rdpwrap_new_ini%` `cscript //nologo "%~f0?.wsf" //job:fileDownload %rdpwrap_ini_url% %rdpwrap_new_ini%`
@ -196,7 +227,7 @@ if "%download_status%"=="-1" (
call :restart call :restart
) else ( ) else (
echo [-] FAILED to download from GitHub latest version to %rdpwrap_new_ini% echo [-] FAILED to download from GitHub latest version to %rdpwrap_new_ini%
echo [~] Please check you internet connection/firewall and try again! echo [*] Please check you internet connection/firewall and try again!
) )
goto :eof goto :eof