@ECHO OFF
CLS

REM @Updater Title string
@ECHO Offirio SynergyWare PrintDirector Ver.1.6b Update Program(111101)
@ECHO.

REM "Set Local variable"
SET JAVA_ROOT=%EPSONNET_ROOT%EpsonNet Application Server\JRE
SET BATDIR=%~dp0
SET SOURCE=%BATDIR%PD1111UP_b.BAT
SET README="%BATDIR%PD1111UP_b.txt"
SET PDUPDATE="%BATDIR%pdupdate.exe"
SET PDINI_PATH="%EPSONNET_ROOT%common\PrintDirector.ini"
SET CLINI_PATH="%EPSONNET_ROOT%EpsonNet PrintDirector\Client\Client.ini"
SET JSP_CLASS_PATH=%EPSONNET_ROOT%EpsonNet Application Server\Tomcat\work\Catalina\localhost\epsonnet\org\apache\jsp\pages
SET PRTMONJW_PATH="%EPSONNET_ROOT%EpsonNet PrintDirector\Client\prtmonjw.dll"
SET VARINI_PATH="%BATDIR%NewModel.ini"
SET PMS_PATH=%EPSONNET_ROOT%EpsonNet LogBrowser\MonSvr
SET LCS_PATH=%EPSONNET_ROOT%EpsonNet LogBrowser\ColSvr
SET CIT_PATH=%EPSONNET_ROOT%EpsonNet LogBrowser\InstTool\client
SET MSGTOOL_PATH=%EPSONNET_ROOT%EpsonNet PrintDirector\MSGSettingTool
SET PD_README_PATH=%EPSONNET_ROOT%EpsonNet PrintDirector
SET POPUP_README_PATH=%BATDIR%\data\client\EpsonNet PrintDirector
SET JAR_LIB_PATH=%EPSONNET_ROOT%EpsonNet Application Server\Tomcat\webapps\epsonnet\WEB-INF\lib
SET UPDATE_FLG=0

REM @Command Prompt execution check
IF NOT EXIST "%SOURCE%" (
@ECHO アップデートファイルが見つからないため、
@ECHO アップデートを中止しました。
PAUSE
EXIT
)

REM "PrintDirector.ini" execution check
IF NOT EXIST %PDINI_PATH% (
@ECHO Offirio SynergyWare PrintDirector がインストールされていません。
@ECHO アップデートを中止しました。
PAUSE
EXIT
)

%PDUPDATE% -t %PDINI_PATH%
if %ERRORLEVEL% == -1 GOTO _GET_TYPE_ERROR
if %ERRORLEVEL% == 6 GOTO _CONTINUE
if %ERRORLEVEL% == 7 GOTO _CONTINUE

:_GET_TYPE_ERROR (
@ECHO 本アップデータでのアップデート対象外です。
PAUSE
EXIT
)

:_CONTINUE

REM @PrintDirector Version check
%PDUPDATE% -CP %PDINI_PATH% %VARINI_PATH%
IF %errorlevel%==-1 GOTO _ERRFRM
IF %errorlevel%==1 GOTO _NEWER_VERSION
IF %errorlevel%==2 GOTO _SAME_VERSION
IF %errorlevel%==3 GOTO _TARGET_VERSION

REM ERROR(バージョン不整合エラー or ファイルオープン失敗)
:_ERRFRM (
@ECHO 本アップデータでのアップデート対象外です。
PAUSE
EXIT
)

:_NEWER_VERSION (
@ECHO 本アップデータより新しいバージョンのアップデータが
@ECHO すでににインストールされています。
PAUSE
EXIT
)

:_SAME_VERSION (
@ECHO 本アップデータはすでにインストールされています。
PAUSE
EXIT
)

:_TARGET_VERSION

:_PMS_UPDATE_START

REM @"PrinterMonitoringServerUpdate" execution check
IF NOT EXIST "%PMS_PATH%" (
@ECHO プリンタ監視サーバがインストールされていません。
GOTO _PMS_UPDATE_END
)

REM @user confirmation to install
SET choice=INSTALL
@ECHO サービス停止後にアップデートを実行します。
@ECHO サービス停止中は印刷制限やログ集計など一部機能が利用できません。 
@ECHO アップデートを開始してよろしいですか？
@ECHO "ENTERキー"で開始します。
@ECHO それ以外のキーで終了します。
SET /P choice=
IF NOT %choice%==INSTALL EXIT

REM @stop EpsonNetLogBrowser PrtMonSvrProccessMonitoring
NET STOP "EpsonNetLogBrowser PrtMonSvrProccessMonitoring" 
IF errorlevel 1 GOTO _PMS_MONITORING_PROCESS_KILL
GOTO _PMS_SERVICE_STOP

:_PMS_MONITORING_PROCESS_KILL
REM @kill PrcsMon.exe
IF EXIST "%SystemRoot%\system32\taskkill.exe" "%SystemRoot%\system32\taskkill.exe" /F /IM PrcsMon.exe
IF EXIST "%ProgramFiles%\Support Tools\kill.exe" "%ProgramFiles%\Support Tools\kill.exe" -F PrcsMon.exe

:_PMS_SERVICE_STOP

REM @stop EpsonNetLogBrowserPrtMonitor Service
NET STOP "EpsonNetLogBrowserPrtMonitor Service" 
IF errorlevel 1 GOTO _PMS_PROCESS_KILL
GOTO _PMS_COPY_FILES

:_PMS_PROCESS_KILL
REM @kill npjmserv.exe
IF EXIST "%SystemRoot%\system32\taskkill.exe" "%SystemRoot%\system32\taskkill.exe" /F /IM npjmserv.exe
IF EXIST "%ProgramFiles%\Support Tools\kill.exe" "%ProgramFiles%\Support Tools\kill.exe" -F npjmserv.exe

:_PMS_COPY_FILES

REM @Copy New Model Module
COPY /Y "%BATDIR%data\monitoringServer\EpsonNet LogBrowser\MonSvr" "%PMS_PATH%"
if not %ERRORLEVEL% == 0 GOTO _PMS_UPDATE_ERR

GOTO _PMS_UPDATE_SUCCESS

:_PMS_UPDATE_ERR (
@ECHO エラーが発生したため、アップデートを中止しました。
PAUSE
EXIT
)

:_PMS_UPDATE_SUCCESS

SET UPDATE_FLG=1

REM start EpsonNetLogBrowserPrtMonitor Service
NET START "EpsonNetLogBrowserPrtMonitor Service"

REM start EpsonNetLogBrowser PrtMonSvrProccessMonitoring
NET START "EpsonNetLogBrowser PrtMonSvrProccessMonitoring"

:_PMS_UPDATE_END

:_PD_LCS_UPDATE_START

REM @check whether PrintDirector is installed
IF EXIST "%EPSONNET_ROOT%EpsonNet Application Server" (
GOTO _SERVICE_STOP_CONFIRM
)

REM @check whether LCS is installed
IF EXIST "%LCS_PATH%" (
GOTO _SERVICE_STOP_CONFIRM
)

REM @exit when both of PD and LCS are not installed
@ECHO ログ取得サーバがインストールされていません。
@ECHO Offirio SynergyWare PrintDirector本体がインストールされていません。
@ECHO;
GOTO _PD_LCS_UPDATE_END

:_SERVICE_STOP_CONFIRM

REM @ユーザー確認を一度しているか判定する
IF %UPDATE_FLG%==1 GOTO _PD_LCS_SERVICE_STOP

REM @user confirmation to install
SET choice=INSTALL
@ECHO サービス停止後にアップデートを実行します。
@ECHO サービス停止中は印刷制限やログ集計など一部機能が利用できません。 
@ECHO アップデートを開始してよろしいですか？
@ECHO "ENTERキー"で開始します。
@ECHO それ以外のキーで終了します。
SET /P choice=
IF NOT %choice%==INSTALL EXIT

:_PD_LCS_SERVICE_STOP

REM @stop EpsonNet PrintDirector Service
NET STOP "EpsonNetPrintDirectorService" 
IF errorlevel 1 GOTO _PD_LCS_PROCESS_KILL
GOTO _LCS_UPDATE_START

:_PD_LCS_PROCESS_KILL

REM @kill Firebird
IF EXIST "%SystemRoot%\system32\taskkill.exe" "%SystemRoot%\system32\taskkill.exe" /F /IM fbserver.exe
IF EXIST "%ProgramFiles%\Support Tools\kill.exe" "%ProgramFiles%\Support Tools\kill.exe" -F fbserver.exe

REM @kill Ensrvmgr
IF EXIST "%SystemRoot%\system32\taskkill.exe" "%SystemRoot%\system32\taskkill.exe" /F /IM ensrvmgr.exe
IF EXIST "%ProgramFiles%\Support Tools\kill.exe" "%ProgramFiles%\Support Tools\kill.exe" -F ensrvmgr.exe

:_LCS_UPDATE_START

REM @"LogCollectionServerUpdate" execution check
IF NOT EXIST "%LCS_PATH%" (
@ECHO ログ取得サーバがインストールされていません。
@ECHO;
GOTO _LCS_UPDATE_END
)

REM @ログ取得サーバの更新
COPY /Y "%BATDIR%data\collectionServer\EpsonNet LogBrowser\ColSvr\Cgi-Bin" "%LCS_PATH%\Cgi-Bin"
if %ERRORLEVEL% == 0 GOTO _LCS_UPDATE_SUCCESS
if not %ERRORLEVEL% == 0 GOTO _LCS_UPDATE_ERR

:_LCS_UPDATE_ERR (
@ECHO エラーが発生したため、アップデートを中止しました。
PAUSE
EXIT
)

:_LCS_UPDATE_SUCCESS

SET UPDATE_FLG=1

:_LCS_UPDATE_END

:_PD_UPDATE_START

REM @check whether PrintDirector is installed
IF NOT EXIST "%EPSONNET_ROOT%EpsonNet Application Server" (
@ECHO Offirio SynergyWare PrintDirector本体がインストールされていません。
@ECHO;
GOTO _PD_UPDATE_END
)

REM REM @PrintDirectorのバージョンチェック
REM %PDUPDATE% -t %PDINI_PATH%
REM if %ERRORLEVEL% == -1 GOTO _VERSION_CHECK_ERR
REM GOTO _PD_COPY_FILES

REM :_VERSION_CHECK_ERR (
REM @ECHO エラーが発生したため、アップデートを中止しました。
REM PAUSE
REM EXIT
REM )

:_PD_COPY_FILES

REM @アップデートの実行
"%JAVA_ROOT%\bin\java" -classpath "%BATDIR%AppSrvUpdate.jar" com.epson.epsonnet.appserverupdate.AppServerUpdate "%BATDIR%"
IF %errorlevel%==-1 GOTO _PD_UPDATE_ERR

REM @クライアントインストーラーの更新
COPY /Y "%BATDIR%data\clientInstallTool\EpsonNet LogBrowser\InstTool\client" "%CIT_PATH%"

REM @"SupportInfo.xml" "SupportInfo.xml" file Version Replacement(JAVA program execution)
"%JAVA_ROOT%\bin\java" -classpath "%BATDIR%newmodel.jar" EditSupportInfoXML "%BATDIR%"
IF %errorlevel%==1 GOTO _PD_UPDATE_ERR
IF %errorlevel%==0 GOTO _PD_UPDATE_SUCCESS

:_PD_UPDATE_ERR (
@ECHO エラーが発生したため、アップデートを中止しました。
PAUSE
EXIT
)

:_PD_UPDATE_SUCCESS

SET UPDATE_FLG=1

:_PD_UPDATE_END

:_PD_LCS_SERVICE_START

REM start EpsonNet PrintDirector Service
NET START "EpsonNetPrintDirectorService"

:_PD_LCS_UPDATE_END

:_VERSION_UPDATE_START

IF %UPDATE_FLG%==0 GOTO _UPDATE_END

REM ReadMe file Replacement
IF EXIST "%EPSONNET_ROOT%EpsonNet PrintDirector" (
COPY /Y %README% "%EPSONNET_ROOT%EpsonNet PrintDirector" 
IF errorlevel 1 GOTO _VER_UP_ERR
)

REM "PrintDirctor" file Version Replacement
%PDUPDATE% -up %PDINI_PATH% %VARINI_PATH%
if %ERRORLEVEL% == -1 GOTO _VER_UP_ERR
if %ERRORLEVEL% == 0 GOTO _UPDATE_END

:_VER_UP_ERR (
@ECHO エラーが発生したため、アップデートを中止しました。
PAUSE
EXIT
)

:_UPDATE_END

@ECHO.
@ECHO アップデートが完了しました。
PAUSE
EXIT
