@ECHO OFF
IF NOT DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
SET PATH=%PATH%;%SystemRoot%\system32\WindowsPowerShell\v1.0;C:\Windows\winsxs\x86_microsoft-windows-w..ommand-line-utility_31bf3856ad364e35_6.1.7600.16385_none_a1802b822e2a878c;
SETLOCAL ENABLEEXTENSIONS
ECHO Checking for OS Name..............
For /F "usebackq tokens=2 delims=:" %%i in (`systeminfo /FO "LIST" ^| Findstr /B /C:"OS Name:"`) DO SET OS_NAME=%%i
Echo %OS_NAME%

SET OS_LANG=ENG
FOR /F "tokens=2 delims==" %%G in ('wmic os get OSLanguage /Value') DO SET OS_LANG=%%G
	IF /I "%OS_LANG%" EQU "1033" (
		SET LANG=ENG
	)
	IF /I "%OS_LANG%" EQU "4" (
		SET LANG=CHZ
	)
	IF /I "%OS_LANG%" EQU "31748" (
		SET LANG=CHZ
	)
	IF /I "%OS_LANG%" EQU "1028" (
		SET LANG=CHZ
	)
	IF /I "%OS_LANG%" EQU "2052" (
		SET LANG=CHZ
	)
	IF /I "%OS_LANG%" EQU "3076" (
		SET LANG=CHZ
	)
	IF /I "%OS_LANG%" EQU "4100" (
		SET LANG=CHZ
	)
	IF /I "%OS_LANG%" EQU "5124" (
		SET LANG=CHZ
	)

IF NOT EXIST """..\Data Studio.ini""" IF "%LANG%" == "ENG" ( 
	START /MIN CMD /c "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""Data Studio.ini file does not exist""","""Data Studio""",0,48)>nul"
	Exit
	)

IF NOT EXIST """..\Data Studio.ini""" IF "%LANG%" == "CHZ" ( 
	START /MIN CMD /c "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""Data Studio.ini 文件不存在 ""","""Data Studio""",0,48)>nul"
	Exit
	)

ECHO Checking for Java Compatibility..............

:: Check Data Studio Version is 32 bit or 64 bit 
SET DS_BIT=0
FOR /F "tokens=*" %%G in ('findstr /C:"x86_64" "..\Data Studio.ini"') DO SET DS_VERSION=%%G
	IF /I "%DS_VERSION%" EQU "" (
		SET DS_BIT=32
		ECHO "DS VERSION is 32 Bit"
	) ELSE ( 
		SET DS_BIT=64
		ECHO "DS VERSION is 64 Bit"
	)

:: Step2 - Get the OS_VERSION (32 Bit or 64 Bit); 
SET OS_BIT=0
FOR /F "tokens=2 delims=:" %%G in ('Systeminfo ^| Findstr "x64-based"') DO SET OS_VERSION=64bit
	IF /I "%OS_VERSION%" EQU "64bit" (
		SET OS_BIT=64
		ECHO "OS VERSION is 64 Bit"
	) ELSE ( 
		SET OS_BIT=32
		ECHO "OS VERSION is 32 Bit"
	)


:JAVA_BIT_CHECK
	:: Step4 - Get the Java Version using wmic and check if it 64 Bit
	Echo Checking for Java 11 64 bit Version .................
	SET JAVA_BIT_64=0
	FOR /F "tokens=*" %%G in ('wmic product get name ^, version ^| findstr /B /C:"Java" ^| findstr "11" ^| findstr "64-bit"') DO SET JAVA_VERSION=%%G

	IF /I NOT "%JAVA_VERSION%" == "" (
			SET JAVA_BIT_64=64
			ECHO "Has Java 11 with 64 bit"
			GOTO JAVA11_32BIT_CHECK
			
	)
	

:JAVA11_32BIT_CHECK

	SET JAVA_BIT_32=0

	Echo Checking for Java 11 32 bit Version .................
	FOR /F "tokens=*" %%G in ('wmic product get name ^, version ^| findstr /B /C:"Java" ^| findstr "11" ^| findstr /V "64-bit" ^| findstr /V "Java\ Auto"') DO SET JAVA_VERSION1=%%G
	
	IF /I NOT "%JAVA_VERSION1%" == "" (
	
			SET JAVA_BIT_32=32
			REM ECHO %JAVA_BIT_32%
			ECHO "Has Java 11 with 32 bit"
			GOTO CHECK_LANG
		)
	
	
	IF %JAVA_BIT_64% == 0 IF %JAVA_BIT_32% == 0 (
		GOTO JAVA_LOWER_CHECK
	)
	GOTO CHECK_LANG
	
:JAVA_LOWER_CHECK
	SET JAVA_BIT=0
	Echo Checking for Java minimum version ..............
	

	FOR /F "tokens=*" %%G in ('wmic product get name ^, version ^| findstr /B /C:"Java" ^| findstr /V "11"') DO SET JAVA_LOWER_VERSION=%%G

		IF /I NOT "%JAVA_LOWER_VERSION%" == "" IF "%LANG%" == "ENG" (
			
			@echo off
			START /MIN CMD /c "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""Data Studio is supported with minimum Java Version of 11. `n`nInstall Java version 11 in order to use Data Studio.""", """Unsupported Java Version""",0,48)>nul"
			GOTO EXIT
		) 
		IF /I NOT "%JAVA_LOWER_VERSION%" == "" IF "%LANG%" == "CHZ" (
			
			@echo off
			START /MIN CMD /c "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""支持Data Studio的最低Java版本为11。`n`n 使用 Data Studio 前需安装 Java 11。 """, """ 不支持该 Java 版本 """,0,48)>nul"
			GOTO EXIT
		) 
		

:CHECK_LANG


 echo Langauge is %LANG%

	IF /I "%LANG%" EQU "ENG" (
		GOTO PRINT_MSG_ENG
	) ELSE (
			GOTO PRINT_MSG_CHZ
			)
	TIMEOUT /T 5
	GOTO EXIT


	
:PRINT_MSG_ENG

::Invalid scenarios
:: Java 32 Bit and Java 64 bit is installed in machine	

		IF /I %JAVA_BIT_64% == %DS_BIT%  IF %OS_BIT% == 64 (
			
			Goto runDS	
			GOTO EXIT
		) 
		IF /I %JAVA_BIT_32% == %DS_BIT%  IF %OS_BIT% == 64 (
			Goto runDS	
			GOTO EXIT
		)
		IF /I %JAVA_BIT_32% == %DS_BIT% IF %OS_BIT% == 32 (
			GOTO runDS
			GOTO EXIT
		)


	IF %JAVA_BIT_64% == 64  IF %DS_BIT% == 32 IF %OS_BIT% == 64 (

			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_64% Bit Data Studio %DS_BIT% Bit"
			START /MIN /B CMD /C "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""You are attempting to run 32-bit Data Studio on: `n`n  . 64 bit OS `n . %OS_NAME%  `n . Java 11 64-bit JDK ^(Incompatible^) `n`n Please install Java 11 32-bit """, """Unsupported Java Version""",0,48)>nul"
			GOTO EXIT
	)		

	IF %JAVA_BIT_32% == 32  IF %DS_BIT% == 64 IF %OS_BIT% == 64 (

			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_32% Bit Data Studio %DS_BIT% Bit"
			START /MIN CMD /C "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""You are attempting to run 64-bit Data Studio on: `n`n  . 64 bit OS `n . %OS_NAME%  `n . Java 11 32-bit JDK ^(Incompatible^) `n`n Please install Java 11 64-bit """, """Unsupported Java Version""",0,48)>nul"
			GOTO EXIT
	)		 

	IF %JAVA_BIT_32% == 32  IF %DS_BIT% == 64 IF %OS_BIT% == 32 (

			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_32% Bit Data Studio %DS_BIT% Bit"
			START /MIN CMD /C "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""You are attempting to run 64-bit Data Studio on: `n`n  . 32 bit OS `n . %OS_NAME%  `n . DS Version 64 Bit ^(Incompatible^) `n`n Please install 32 bit DS """, """Unsupported DS Version""",0,48)>nul"
			GOTO EXIT
	)		 

	
	::Valid scenarios	

	IF %JAVA_BIT_64% == 64  IF %DS_BIT% == 64 IF %OS_BIT% == 64 (
			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_64% Bit Data Studio %DS_BIT% Bit"
			GOTO runDS 
			GOTO EXIT
	)		

	IF %JAVA_BIT_32% == 32  IF %DS_BIT% == 32 IF %OS_BIT% == 32 (
			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_32% Bit Data Studio %DS_BIT% Bit "
			GOTO runDS 
			GOTO EXIT
	) 
	IF %JAVA_BIT_32% == 32  IF %DS_BIT% == 32 IF %OS_BIT% == 64 (
		 	Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_32% Bit Data Studio %DS_BIT% Bit "
			GOTO runDS 
			GOTO EXIT
	) 	

:PRINT_MSG_CHZ

::Invalid scenarios
:: Java 32 Bit and Java 64 bit is installed in machine	

		IF /I %JAVA_BIT_64% == %DS_BIT%  IF %OS_BIT% == 64 (
			Goto runDS	
			GOTO EXIT
		) 
		IF /I %JAVA_BIT_32% == %DS_BIT%  IF %OS_BIT% == 64 (
			Goto runDS	
			GOTO EXIT
		)
		IF /I %JAVA_BIT_32% == %DS_BIT% IF %OS_BIT% == 32 (
			GOTO runDS
			GOTO EXIT
		)


	IF %JAVA_BIT_64% == 64  IF %DS_BIT% == 32 IF %OS_BIT% == 64 (
			
			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_64% Bit Data Studio %DS_BIT% Bit"
			START /MIN /B CMD /C "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""您试图在如下环境运行32位Data Studio:`n`n  . 64 位操作系统 `n . %OS_NAME%  `n . 64位Java 11 JDK ^(不兼容^) `n`n 请使用64位的Data Studio。 """, """不支持该 Data Studio 版本""",0,48)>nul"
			GOTO EXIT
	)		

	IF %JAVA_BIT_32% == 32  IF %DS_BIT% == 64 IF %OS_BIT% == 64 (

			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_32% Bit Data Studio %DS_BIT% Bit"
			START /MIN CMD /C "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""您试图在如下环境运行64位Data Studio: `n`n  . 64位操作系统 `n . %OS_NAME%  `n . 32位Java 11 JDK ^(不兼容^)`n`n 请安装64位Java 11。 """, """不支持该 Java 版本""",0,48)>nul"
			GOTO EXIT
	)		 

	REM ADDED NEW SCENARIO FOR JAVA 32 BIT AND DS 64 BIT AND OS 32 BIT
	IF %JAVA_BIT_32% == 32  IF %DS_BIT% == 64 IF %OS_BIT% == 32 (

			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_32% Bit Data Studio %DS_BIT% Bit"
			START /MIN CMD /C "powershell.exe [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""您试图在如下环境运行64位Data Studio: `n`n  . 32位操作系统 `n . %OS_NAME%  `n . 32位Java 11 JDK ^(不兼容^)`n`n 请使用32位的Data Studio。 """, """不支持该 Data Studio 版本""",0,48)>nul"
			GOTO EXIT
	)		
	REM ADDED NEW SCENARIO
::Valid scenarios	

	IF %JAVA_BIT_64% == 64  IF %DS_BIT% == 64 IF %OS_BIT% == 64 (
			Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_64% Bit Data Studio %DS_BIT% Bit"
			GOTO runDS 
			GOTO EXIT
	)		

	IF %JAVA_BIT_32% == 32  IF %DS_BIT% == 32 IF %OS_BIT% == 32 (
		 	Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_32% Bit Data Studio %DS_BIT% Bit "
			GOTO runDS 
			GOTO EXIT
	) 
	IF %JAVA_BIT_32% == 32  IF %DS_BIT% == 32 IF %OS_BIT% == 64 (
		 	Echo "OS is %OS_BIT% , Java 11 %JAVA_BIT_32% Bit Data Studio %DS_BIT% Bit "
			GOTO runDS 
			GOTO EXIT
	) 	

:runDS
	Echo "Launching Data Studio"
	CD ..
	call START "" "Data Studio.exe" 
	TIMEOUT /T 5
	GOTO EXIT

@ECHO ON
:EXIT
Exit