@echo off
rem //------------------------------------------------------------------------------
rem // リモートマイクロ交換(Setup Installer)サイレントアップデートバッチファイル
rem //------------------------------------------------------------------------------
cd /d %~dp0

rem トレースファイル格納先作成
set TRACEDIR=%SystemDrive%\SetupTrace
if not exist %TRACEDIR% (
	mkdir %TRACEDIR%
)

rem エラーコードファイルの一時出力先
set ERRCODEFILE=%TRACEDIR%\ErrorCode.log
rem 応答ファイル
set ISSFILEPATH=..\..\Setup2K\update.iss
set INSDIR=nul
set ELEVATED=no
set REGTMP=%TRACEDIR%\regtmp.txt
set DLLRENAME=no

rem 以前のログファイル削除（トレースフォルダ内）
if exist %ERRCODEFILE% (
	del %ERRCODEFILE%
)

rem --------------- 管理者権限チェック ---------------
for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do (
	if "%%~i"=="Mandatory Label\High Mandatory Level" set ELEVATED=yes
	if "%%~i"=="Mandatory Label\System Mandatory Level" set ELEVATED=yes
)
 
if "%ELEVATED%" neq "yes" (
	rem 管理者権限で実行されていない。
	call :createErrorCodeFile 200036
	goto installend
)

rem --------------- インストールチェック ---------------
set ValueName=Install_Root
rem 32bit OSのレジストリチェック
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Hitachi\HM_RAID" /v "%ValueName%" > %REGTMP% 2>&1
for /f "tokens=1,2*" %%i in (%REGTMP%) DO (
	if "%%i"=="%ValueName%" (
		set INSDIR=%%k
		goto :break1
	)
)
:break1
del %REGTMP%

if %INSDIR% equ nul (
	rem 64bit OSのレジストリチェック
	reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Hitachi\HM_RAID" /v "%ValueName%" > %REGTMP% 2>&1
	for /f "tokens=1,2*" %%i in (%REGTMP%) DO (
		if "%%i"=="%ValueName%" (
			set INSDIR=%%k
			goto :break2
		)
	)
:break2
	del %REGTMP%

	if %INSDIR% equ nul (
		rem インストールされていない。
		call :createErrorCodeFile 200041
		goto installend
	)
)
rem Setup.logファイルの出力先
set SETUPLOG=%INSDIR%\wk\supervisor\setup\log\setup.log

rem --------------- 起動パラメータチェック ---------------
if "%~1" neq "" (
	rem 起動パラメータ不正
	call :createErrorCodeFile 200043
	goto installend
)


rem --------------- 応答ファイルのチェック ---------------
if not exist %ISSFILEPATH% (
	rem 応答ファイルがありません。
	call :createErrorCodeFile 200039
	goto installend
)

find "[InstallShield Silent]" %ISSFILEPATH% > nul 2>&1
if "%errorlevel%" neq "0" (
	rem 応答ファイルが不正です。
	call :createErrorCodeFile 200038
	goto installend
)

find "SdFinishReboot-0]" %ISSFILEPATH% > nul 2>&1
if "%errorlevel%" neq "0" (
	rem 応答ファイルが不正です。
	call :createErrorCodeFile 200038
	goto installend
)
set DLLRENAME=yes
set TARGETDIR=%INSDIR%\wk\supervisor\rmapi
del /F %TARGETDIR%\*.dll.old > nul 2>&1

rem --------------- インストーラ実行 ---------------
start /w ..\..\Setup2K\setup /s /f1%ISSFILEPATH% /f2%SETUPLOG%

:installend
rem ログ格納先が作成されていたらログファイルをコピー
if exist %INSDIR%\wk\supervisor\setup\log\ (
	copy %ERRCODEFILE% %INSDIR%\wk\supervisor\setup\log\. > nul 2>&1
)

rem エラーファイルが作成されていたら異常終了する
if exist %ERRCODEFILE% (
	if "%DLLRENAME%" equ "yes" (
		call ..\..\Setup2K\restoreRmapiDll.bat %INSDIR%
	)
	exit /b 1
)

rem 正常終了
exit /b 0

rem --------------- エラーログファイル作成 ---------------
:createErrorCodeFile
echo [DATE]>%ERRCODEFILE%
echo %date%>>%ERRCODEFILE%
echo [TIME]>>%ERRCODEFILE%
echo %time%>>%ERRCODEFILE%
echo [ERRCODE]>>%ERRCODEFILE%
(echo Result=%1)>>%ERRCODEFILE%
exit /b

