@rem
@rem Copyright 2004-2008 Crypto-Pro. All rights reserved.
@rem Этот файл содержит информацию, являющуюся
@rem собственностью компании Крипто-Про.
@rem
@rem Любая часть этого файла не может быть скопирована,
@rem исправлена, переведена на другие языки,
@rem локализована или модифицирована любым способом,
@rem откомпилирована, передана по сети с или на
@rem любую компьютерную систему без предварительного
@rem заключения соглашения с компанией Крипто-Про.
@rem
@rem ---------------------------------------------------
@rem
@rem Скрипт удаления КриптоПро JCP v.1.0
@rem 
@rem Использование:
@rem   uninstall.bat <путь_к_JRE>
@rem
@rem Пример:
@rem   uninstall.bat "C:\Program Files\Java\jre6"
@rem

@rem Коды ошибок

@rem Ошибка при проверке папки с дистрибутивом JCP
@set ERR_DISTRIB=1001
@rem JVM не задана или задана неверно
@set ERR_JAVACMD=1002
@rem Не задана папка TMP (TEMP)
@set ERR_TEMPDIR=1003
@rem Ошибка при удалении JCP
@set  ERR_JAVAVM=1004

@rem Обнуляем код предыдущей ошибки
@set errorlevel=0

@if not "-%~1"=="-" @goto :checkjcpinst
@echo USAGE:
@echo   uninstall.bat path_to_JRE
@echo Example:
@echo   uninstall.bat "C:\Program Files\Java\jre6"
@goto :EOF

:checkjcpinst
@echo Params: %*
@set DISTPATH=%~dp0
@if exist "%DISTPATH%\JCPinst.jar" @goto :settempdir
@echo Script must be in the installer folder
@set errorlevel=%ERR_DISTRIB%
@goto :ERROR

:settempdir
@set DELFILESLST=
@if not "-%TMP%"=="-" @set DELFILESLST=%TMP%\delfiles.lst
@if not "-%TEMP%"=="-" @set DELFILESLST=%TEMP%\delfiles.lst
@if not "-%TMPDIR%"=="-" @set DELFILESLST=%TMPDIR%\delfiles.lst
@if not "-%DELFILESLST%"=="-" @goto :setdelfileslst
@echo Temporary directory is not set
@set errorlevel=%ERR_TEMPDIR%
@goto :ERROR

:setdelfileslst
@if not exist "%DELFILESLST%" @goto :setjavacmd
@del /q /f "%DELFILESLST%"

:setjavacmd
@set JAVACMD=java
@set JREDIR=
@if not "-%~1"=="-" @set JREDIR=%~1
@if not "-%JREDIR%"=="-" @goto :checkjre
@goto :uninstall

:checkjre
@set JAVACMD="%JREDIR%\bin\java.exe"
@if exist %JAVACMD% @goto :uninstall
@echo File not found: %JAVACMD%
@set errorlevel=%ERR_JAVACMD%
@goto :ERROR

:uninstall
@%JAVACMD% -version
@dir "%DISTPATH%"
@echo ---- Uninstall started
@%JAVACMD% -cp "%DISTPATH%\JCPinst.jar" ru.CryptoPro.Install.VariantOne -uninstall all -verbose -rmsetting -skipfiles "%DELFILESLST%"
@if "%errorlevel%"=="0" @goto :dellist
@echo Uninstall failed
@goto :ERROR

:dellist
@if not exist %DELFILESLST% @goto :hard_delete
@for /F "tokens=*" %%i IN (%DELFILESLST%) DO @del /q /f "%%i"
@for /F "tokens=*" %%i IN (%DELFILESLST%) DO @if exist "%%i" @goto :stopjava
@del /q /f "%DELFILESLST%"
@del /q /f "%JREDIR%\lib\ext\cspjni.dll"

:hard_delete
@if "-%JREDIR%"=="-" @goto :uninstallend
@echo ---- Hard delete started
@echo ---- Hard delete started at %DATE% %TIME%
@del /q /f "%JREDIR%\lib\ext\JCP.jar"
@del /q /f "%JREDIR%\lib\ext\ASN1P.jar"
@del /q /f "%JREDIR%\lib\ext\forms_rt.jar"
@del /q /f "%JREDIR%\lib\ext\asn1rt.jar"
@del /q /f "%JREDIR%\lib\ext\JCP.jar"
@del /q /f "%JREDIR%\lib\ext\Oscar.jar"
@del /q /f "%JREDIR%\lib\ext\JCryptoP.jar"
@del /q /f "%JREDIR%\lib\ext\JCPinst.jar"
@del /q /f "%JREDIR%\lib\ext\JCPxml.jar"
@del /q /f "%JREDIR%\lib\ext\JCPRequest.jar"
@del /q /f "%JREDIR%\lib\ext\cpSSL.jar"
@del /q /f "%JREDIR%\lib\ext\OCF.jar"
@del /q /f "%JREDIR%\lib\ext\JCPRevCheck.jar"
@del /q /f "%JREDIR%\lib\ext\JCPRevTools.jar"
@del /q /f "%JREDIR%\lib\ext\CAdES.jar"
@del /q /f "%JREDIR%\lib\ext\XMLDSigRI.jar"
@del /q /f "%JREDIR%\lib\ext\JCSP.jar"
@del /q /f "%JREDIR%\lib\ext\cspjni.dll"

@if exist "%JREDIR%\lib\ext\JCP.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\ASN1P.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\forms_rt.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\asn1rt.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\JCP.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\Oscar.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\JCryptoP.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\JCPinst.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\JCPxml.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\JCPRequest.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\cpSSL.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\OCF.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\JCPRevCheck.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\JCPRevTools.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\CAdES.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\XMLDSigRI.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\JCSP.jar" @goto :stopjava
@if exist "%JREDIR%\lib\ext\cspjni.dll" @goto :stopjava
@echo ---- Hard delete finished
@goto :uninstallend

:stopjava
@echo ---- Warning
@echo JVM is running or jar-files are locked
@echo Stop all processes that use Java and retry
@set errorlevel=%ERR_JAVAVM%
@goto :ERROR

:uninstallend
@echo ---- Uninstall finished
@echo ---- Script SUCCEEDED
@goto :EOF

:ERROR
@echo ---- Script ERROR
@echo ---- error code: %errorlevel%
@goto :printErrorMessage
@goto :EOF

:printErrorMessage
@if %errorlevel%==%ERR_DISTRIB% echo ---- error message: "An error occured during the check of JCP distrib"
@if %errorlevel%==%ERR_JAVACMD% echo ---- error message: "JVM option is invalid"
@if %errorlevel%==%ERR_TEMPDIR% echo ---- error message: "Global variable TMP (TEMP) is undefined"
@if %errorlevel%==%ERR_JAVAVM%  echo ---- error message: "An error occured during JCP uninstalling"
@goto :EOF
