@ echo off
Setlocal EnableDelayedExpansion
setlocal
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ECHO Installing HPE Matrix Operating Environment...
echo This might take some time please wait...
:: Creating LogFile with time stamp
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
set mytime=%mytime: =0%
:: Creating LogFile Folder 
if not exist "C:\HPIC\logs\LimitedRelease4" mkdir "C:\HPIC\logs\LimitedRelease4"
set LOGFILE=C:\HPIC\logs\LimitedRelease4\MatrixOE_%mydate%_%mytime%.log
ECHO [%DATE% %TIME%] Installing HPE Matrix Operating Environment...                                              >> %LOGFILE%
echo [%DATE% %TIME%] This might take some time please wait...                                                    >> %LOGFILE%
echo [%DATE% %TIME%] Log file path: %LOGFILE%                                                                    >> %LOGFILE%
rem echo [%DATE% %TIME%] log file folder created                               >> %LOGFILE%
set SIM_SERVICE="HP Systems Insight Manager"
set SIM_SERVICE_NAME="HPE Systems Insight Manager"
set GWLM_SERVICE="HP Global Workload Manager CMS"
set AGENTLESS_SERVICE="hp_agentless_service"
set CAPAD_SERVICE="HP Capacity Advisor Data Service"
set APPDISC_SERVICE="AppDisc"
set LSA_SERVICE="HP Logical Server Automation"
:: Getting MatrixOE Installation Path from Registry
Echo [%date% %time%] Reading HPESIM installation path from Registry                                              >>%LOGFILE% 
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\Hewlett-Packard\Systems Insight Manager\Settings" /v InstallPath') DO set SIMInstallPath=%%B
Echo [%date% %time%] HPESIM installation path: %SIMInstallPath%                                                  >>%LOGFILE% 
Echo [%DATE% %TIME%] Getting MatrixOE Installation path from Registry.                                           >> %LOGFILE%
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\Hewlett-Packard\Virtual Server Environment" /v InstallPath') DO set MOEInstallPath=%%B
echo [%DATE% %TIME%] MatrixOE Installation Path: %MOEInstallPath%                                                >> %LOGFILE%
ECHO [%DATE% %TIME%] Applying Patch.                                                                             >> %LOGFILE%
echo [%DATE% %TIME%] Creating Backup Folder:                                                                     >> %LOGFILE%
:: Creating Backup Folder
set MatrixOE=Virtual Server Environment
rem set BackupInstallPath=%MOEInstallPath%
for /D %%D in ("%MOEInstallPath%") do (
	set BackupInstallPath=%%~dpD
)
if exist "%BackupInstallPath%LimitedRelease1\%MatrixOE%" rmdir /s /q "%BackupInstallPath%LimitedRelease1\%MatrixOE%"
if exist "%BackupInstallPath%LimitedRelease2\%MatrixOE%" rmdir /s /q "%BackupInstallPath%LimitedRelease2\%MatrixOE%"
if exist "%BackupInstallPath%LimitedRelease3\%MatrixOE%" rmdir /s /q "%BackupInstallPath%LimitedRelease3\%MatrixOE%"
if not exist "%BackupInstallPath%LimitedRelease4\%MatrixOE%" mkdir "%BackupInstallPath%LimitedRelease4\%MatrixOE%"
set BackupFolder=%BackupInstallPath%LimitedRelease4\%MatrixOE%
echo [%DATE% %TIME%] Backup Folder Path: %BackupFolder%                                                          >> %LOGFILE%
echo [%DATE% %TIME%] Taking backup of existing files and folder.                                                 >> %LOGFILE%
:: robocopy is an inbuilt command in windows	
:: /E and /S : copy subdirectories, including Empty ones
:: %~dp0 stands for the default path (Current Path). You don't have to set a backslash after it(It is optional).
:: The brackets ("") are only needed, if there are white spaces in the pathname.

:: InstallDir files copy
ROBOCOPY "%MOEInstallPath%"\               	                      "%BackupFolder%"                               >> %LOGFILE% /s /e
echo [%DATE% %TIME%] Copying files:                                                                              >> %LOGFILE%

ROBOCOPY %~dp0\File\INSTALLDIR\                 	              "%MOEInstallPath%"                             >> %LOGFILE% /s /e

echo [%DATE% %TIME%] All MatrixOE files copied to destiantion path.                                              >> %LOGFILE%

:: Delete old ESA libs
echo [%DATE% %TIME%] Trying to delete old ESA libs...                                                            >> %LOGFILE%
:: Delete old ESA Apache CXF 3.0.9
echo [%DATE% %TIME%] If exists try to delete old ESA Apache CXF 3.0.9.                                           >> %LOGFILE%
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-core-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-core-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-bindings-soap-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-bindings-soap-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-bindings-xml-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-bindings-xml-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-databinding-jaxb-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-databinding-jaxb-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-frontend-jaxws-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-frontend-jaxws-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-frontend-simple-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-frontend-simple-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-transports-http-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-transports-http-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-ws-addr-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-ws-addr-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-ws-policy-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-ws-policy-3.0.9.jar"
if exist "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-wsdl-3.0.9.jar" del /F /Q "%MOEInstallPath%\esa\webapps\esa\WEB-INF\lib\cxf-rt-wsdl-3.0.9.jar"
echo [%DATE% %TIME%] All old ESA libs deleted.                                                                   >> %LOGFILE%
:: Delete old JRE form depot folder.
if exist "%MOEInstallPath%\depot\jre15_15012_ia.depot" del /F /Q "%MOEInstallPath%\depot\jre15_15012_ia.depot"
if exist "%MOEInstallPath%\depot\jre15_15012_pa.depot" del /F /Q "%MOEInstallPath%\depot\jre15_15012_pa.depot"
echo [%DATE% %TIME%] JRE1.5 depots deleted.                                                                   >> %LOGFILE%

:: WEBAPP files copy to SIM Install Directory
ROBOCOPY "%SIMInstallPath%\hpwebadmin\webapps\vse.war"            "%BackupFolder%\hpwebadmin\webapps\vse.war"    >> %LOGFILE% /s /e
echo [%DATE% %TIME%] Copying files:    >> %LOGFILE%

ROBOCOPY %~dp0\File\WEBAPP\                 	                  "%SIMInstallPath%\hpwebadmin\webapps\vse.war"  >> %LOGFILE% /s /e

echo [%DATE% %TIME%] All HPESIM files copied to destination path.                                                >> %LOGFILE%

:: MXHELP files copy to SIM Install Directory
ROBOCOPY "%SIMInstallPath%\hpwebadmin\webapps\mxhelp"             "%BackupFolder%\hpwebadmin\webapps\mxhelp"     >> %LOGFILE% /s /e
echo [%DATE% %TIME%] Copying files:    >> %LOGFILE%

ROBOCOPY %~dp0\File\MXHELP\                 	                  "%SIMInstallPath%\hpwebadmin\webapps\mxhelp"   >> %LOGFILE% /s /e

echo [%DATE% %TIME%] All Help files copied to destination path.                                                  >> %LOGFILE%

echo [%DATE% %TIME%] Copying files:    >> %LOGFILE%

ROBOCOPY %~dp0\File\INSTALLDIR\tools\simtools\                 	  "%SIMInstallPath%\tools"                       >> %LOGFILE% /s /e

echo [%DATE% %TIME%] All MatrixOE tool files copied to destination path.                                         >> %LOGFILE%

echo [%DATE% %TIME%] Starting %SIM_SERVICE%                                                                      >> %LOGFILE%                               
net start %SIM_SERVICE%    >NUL 2>&1

echo [%DATE% %TIME%] vseinitconfig is executing... 					                                             >> %LOGFILE%
echo [%DATE% %TIME%] vseinitconfig is executing. This will take some time. Please wait...                        >> %LOGFILE%
call "%MOEInstallPath%\bin\vseinitconfig.bat" --initconfig  -q -w                                                >> %LOGFILE% >NUL 2>&1
 
if ERRORLEVEL 1 goto ROLLBACK

echo [%DATE% %TIME%] Stopping Dependency services           			                                         >> %LOGFILE%                                   
net stop %SIM_SERVICE%                                                                                           >NUL 2>&1
net stop %GWLM_SERVICE%                                                                                          >NUL 2>&1
net stop %AGENTLESS_SERVICE%                                                                                     >NUL 2>&1
net stop %CAPAD_SERVICE%                                                                                         >NUL 2>&1
net stop %APPDISC_SERVICE%                                                                                       >NUL 2>&1
net stop %LSA_SERVICE%                                                                                           >NUL 2>&1

echo [%DATE% %TIME%] vseinitconfig executed succesfully..                                                        >> %LOGFILE%

:: Deleting existing registries
REG QUERY "HKLM\SOFTWARE\Hewlett-Packard\Virtual Server Environment" /v LRversion >NUL 2>&1 
if %ERRORLEVEL%==0 (
REG DELETE "HKLM\SOFTWARE\Hewlett-Packard\Virtual Server Environment" /v LRversion /f >NUL 2>&1 
echo [%DATE% %TIME%] Registry deleted                                                                            >> %LOGFILE% 
) else (
echo [%DATE% %TIME%] Registry not found                                                                          >> %LOGFILE% 
)

REG QUERY "HKLM\SOFTWARE\Wow6432Node\Hewlett-Packard\Virtual Server Environment" /v LRversion >NUL 2>&1 
if %ERRORLEVEL%==0 (
REG DELETE "HKLM\SOFTWARE\Wow6432Node\Hewlett-Packard\Virtual Server Environment" /v LRversion /f >NUL 2>&1 
echo [%DATE% %TIME%] Registry deleted                                                                            >> %LOGFILE% 
) else (
echo [%DATE% %TIME%] Registry not found                                                                          >> %LOGFILE% 
)

:: For successful MOE Patch installation 7.6.1 registry created in below registry path 
REG ADD "HKLM\SOFTWARE\Hewlett-Packard\Virtual Server Environment" /v "LRversion" /t REG_SZ /d 7.6.4.93539 /f >NUL 2>&1
echo Success>"%SystemDrive%\HPIC\logs\LimitedRelease4\MatrixOE_output.txt"
echo Installation completed succesfully.
echo.
exit /B %ERRORLEVEL%
 
:ROLLBACK
echo Fail>"%SystemDrive%\HPIC\logs\LimitedRelease4\MatrixOE_output.txt"
echo [%DATE% %TIME%] Failed to install, see %LOGFILE% for details.                                               >> %LOGFILE%
echo Failed to install, see %LOGFILE% for details.
echo.
call "%~dp0\rollback.bat"
EXIT /B %ERRORLEVEL%
endlocal
echo on
