Browse Source

Merge branch 'compile_upgrade_base230' of http://gitee.itc.cmbchina.cn/QD_RemoteBankArea/LR04.02_RVCTerminalPlus into compile_upgrade_base230

chenliangyu 1 year ago
parent
commit
3acd04dc08

+ 16 - 16
CMakeLists.txt

@@ -57,7 +57,7 @@ set(DEVOPS_ON_CMAKE_ST FALSE)
 set(DEVOPS_ON_CMAKE_UAT FALSE)
 set(DEVOPS_ON_CMAKE_DEV FALSE)
 set(DEVOPS_ON_CMAKE_PRD FALSE)
-
+set(COMPILED_ENV_TYPE 0)
 if(MSVC)
 	set(TARGET_PLATFORM Windows)
 else()
@@ -350,15 +350,19 @@ endif()
 if(DEVOPS_ON_CMAKE_ST)
 	add_compile_definitions(DEVOPS_ON_ST)
 	message(STATUS "add st compile definition")
+	set(COMPILED_ENV_TYPE 2)
 elseif(DEVOPS_ON_CMAKE_UAT)
 	add_compile_definitions(DEVOPS_ON_UAT)
 	message(STATUS "add uat compile definition")
+	set(COMPILED_ENV_TYPE 3)
 elseif(DEVOPS_ON_CMAKE_DEV)
 	add_compile_definitions(DEVOPS_ON_DEV)
 	message(STATUS "add dev compile definition")
+	set(COMPILED_ENV_TYPE 1)
 elseif(DEVOPS_ON_CMAKE_PRD)
 	add_compile_definitions(DEVOPS_ON_PRD)
 	message(STATUS "add product compile definition")
+	set(COMPILED_ENV_TYPE 4)
 endif(DEVOPS_ON_CMAKE_ST)
 
 # Configure MSVC Runtime
@@ -552,7 +556,6 @@ endif(UNIX)
 # Include directories
 include_directories(${CMAKE_CURRENT_BINARY_DIR})
 
-
 if(DEVOPS_ON_CMAKE_ST)
 	set(INI_CONTENT "[MicroServiceURL]\nenv=ST_BIZ")
 elseif(DEVOPS_ON_CMAKE_UAT)
@@ -564,11 +567,8 @@ elseif(DEVOPS_ON_CMAKE_PRD)
 else()
 	set(INI_CONTENT "[MicroServiceURL]\nenv=ST_BIZ")
 endif(DEVOPS_ON_CMAKE_ST)
-
-
 # 生成env.ini文件
 file(WRITE ${CMAKE_BINARY_DIR}/env.ini "${INI_CONTENT}")
-
 message("Generated env.ini file in ${CMAKE_BINARY_DIR}")
 
 # Configure files
@@ -692,7 +692,6 @@ if(MSVC)
 	endif()
 endif()
 
-
 if(MSVC)
 	file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/win/*")
 	install(PROGRAMS ${BIN_FILES} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
@@ -711,10 +710,15 @@ message(STATUS "RVC_VERSION = ${RVC_VERSION}, RVC_VERSION_MAJOR=${RVC_VERSION_MA
 file(WRITE ${active_txt_file} "${RVC_VERSION}")
 install(FILES ${active_txt_file} DESTINATION ${RVC_BASE_PATH} COMPONENT scripts)
 
+if(DEVOPS_ON AND DEVOPS_ON_CMAKE_PRD)
+	set(INSTALLSCRIPT_TYPE 1)
+else()
+	set(INSTALLSCRIPT_TYPE 0)
+endif(DEVOPS_ON AND DEVOPS_ON_CMAKE_PRD)
 if(MSVC)
-	file(GLOB BAT_SCRIPTS "${CMAKE_SOURCE_DIR}/addin/startup_scripts/*.vbs")
-	install(PROGRAMS "${CMAKE_SOURCE_DIR}/addin/install.bat" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
-	install(FILES "${CMAKE_SOURCE_DIR}/addin/Readme.txt" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
+	configure_file("${CMAKE_SOURCE_DIR}/addin/packaging/WIN/installbat.in" "${CMAKE_BINARY_DIR}/install.bat" @ONLY NEWLINE_STYLE CRLF)
+	install(PROGRAMS "${CMAKE_BINARY_DIR}/install.bat" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
+	install(FILES "${CMAKE_SOURCE_DIR}/addin/packaging/WIN/Readme.txt" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
 	if(NOT DEVOPS_ON)
 		install(FILES "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/${ROOT_INI_NAME}" 
 			DESTINATION "${PACK_INSTALL_RUN_DIR}/hardwarecfg" 
@@ -722,8 +726,7 @@ if(MSVC)
 			COMPONENT scripts)
 	endif(NOT DEVOPS_ON)
 	if(NOT DEVOPS_ON_CMAKE_PRD)
-		install(PROGRAMS "${CMAKE_SOURCE_DIR}/addin/upgrade.bat" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
-		install(PROGRAMS "${CMAKE_SOURCE_DIR}/addin/kill.bat" DESTINATION ${RVC_BASE_PATH} COMPONENT scripts)
+		install(PROGRAMS "${CMAKE_SOURCE_DIR}/addin/packaging/WIN/kill.bat" DESTINATION ${RVC_BASE_PATH} COMPONENT scripts)
 	endif(NOT DEVOPS_ON_CMAKE_PRD)
 else(MSVC)
 	file(GLOB BAT_SCRIPTS "${CMAKE_SOURCE_DIR}/addin/startup_scripts/*.sh")
@@ -734,11 +737,8 @@ endif(MSVC)
 
 # TODO: rewrite install.sh to match update pacakge.
 if(NOT MSVC AND NOT PACK_AS_DEB_PKG)
-	install(PROGRAMS "${CMAKE_SOURCE_DIR}/addin/install.sh" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
-	install(FILES "${CMAKE_SOURCE_DIR}/addin/Readme.txt" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
-	if(NOT DEVOPS_ON_CMAKE_PRD)
-		install(PROGRAMS "${CMAKE_SOURCE_DIR}/addin/upgrade.sh" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
-	endif(NOT DEVOPS_ON_CMAKE_PRD)
+	install(PROGRAMS "${CMAKE_SOURCE_DIR}/addin/packaging/UOS/install.sh" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
+	install(FILES "${CMAKE_SOURCE_DIR}/addin/packaging/UOS/Readme.txt" DESTINATION "${PACK_INSTALL_RUN_DIR}/./.." COMPONENT scripts)
 endif(NOT MSVC AND NOT PACK_AS_DEB_PKG)
 
 list(REMOVE_DUPLICATES RVC_CONAN_DEP_LIBS)

+ 2 - 2
Module/mod_mediacontroller/capture.cpp

@@ -2356,12 +2356,12 @@ namespace MediaController {
 		for (int i = 0; i < 64 && ifound < icount; ++i) {
 			char strcamera[2 * MAX_PATH] = { 0 };
 			if (0 == rvc_videocap_get_device_fullpathname(i, strcamera, 2 * MAX_PATH)) {
-				ifound++;
 				CSimpleStringA str = CSimpleStringA::Format("\"%s\"", strcamera);
-				if (i > 0) {
+				if (ifound > 0) {
 					strdevicelist += ",";
 				}
 				strdevicelist += str;
+				ifound++;
 			}
 		}
 

+ 62 - 17
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -23,6 +23,12 @@
 #define MAX_PATH 260
 #endif
 
+
+#ifndef RVC_CAMERA_OFF_TIMER
+#define RVC_CAMERA_OFF_TIMER 3
+#endif // !RVC_CAMERA_OFF_TIMER
+
+
 #ifdef RVC_OS_WIN
 static void __audio_render_log(void* user_data, const char* fmt, va_list arg)
 {
@@ -82,9 +88,8 @@ static int GetFormatString(char* strVala, size_t uValaLen, char* strValb, size_t
 
 
 CMediaControllerEntity::CMediaControllerEntity(): m_capture(NULL), m_salesaudio_capture(NULL), m_lCaptureEnvCount(0), m_nCameraErrorCode(Error_Succeed),
-	m_lCaptureEnvOptCount(0), m_lCaptureOptCount(0), m_iEnvEmptyTimes(0), m_iOptEmptyTimes(0), m_bSendCameraError(false),
-	m_nEnvCameraRestartNum(0), m_nOptCameraRestartNum(0), m_nCameraCount(2), m_pHMClient(NULL),m_pMediaControllerChannel(NULL),
-	m_bIsRemoteRecord(false), m_bHasStartSpeakerRender(false), m_bConnectedAssist(false)
+	m_lCaptureEnvOptCount(0), m_lCaptureOptCount(0), m_iEnvEmptyTimes(0), m_iOptEmptyTimes(0), m_nEnvCameraRestartNum(0), m_nOptCameraRestartNum(0), 
+	m_nCameraCount(2), m_pHMClient(NULL),m_pMediaControllerChannel(NULL),m_bIsRemoteRecord(false), m_bHasStartSpeakerRender(false), m_bConnectedAssist(false)
 {
 #ifdef RVC_OS_LINUX
 	m_env_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -101,6 +106,7 @@ CMediaControllerEntity::CMediaControllerEntity(): m_capture(NULL), m_salesaudio_
 	m_interValTime = RVC_CAM_INTERVAL_TIME;
 	m_bOnBusiness = false;
 	m_bJsOccupyCamera = false;
+	m_bCameraOffTimerOn = false;
 }
 
 void CMediaControllerEntity::OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName)
@@ -118,8 +124,13 @@ void CMediaControllerEntity::OnSysVarEvent(const char *pszKey, const char *pszVa
 			}
 			else {
 				if (strState.GetLength() > 0 && strState[0] == 'M') {
-					if (Error_Succeed != GetFunction()->KillTimer(3)) {
-						LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "Call State is Connecting, and UIState is M, KillTimer 3 failed.");
+					if (m_bCameraOffTimerOn) {
+						if (Error_Succeed != GetFunction()->KillTimer(RVC_CAMERA_OFF_TIMER)) {
+							LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "Call State is Connecting, and UIState is M, kill camera off timer failed.");
+						}
+						else {
+							m_bCameraOffTimerOn = false;
+						}
 					}
 				}
 			}	
@@ -127,8 +138,13 @@ void CMediaControllerEntity::OnSysVarEvent(const char *pszKey, const char *pszVa
 		else if ('O' == pszValue[0]){
 			if (strState.GetLength() > 0 && strState[0] == 'M') {
 				if (m_bStartCamera) {
-					if (Error_Succeed != GetFunction()->SetTimer(3, this, m_iDelayTime * 1000)) {
-						LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_SETTIMER_ERROR, "Call State is OffLine, and UIState is M, SetTimer 3 failed.");
+					if (false == m_bCameraOffTimerOn) {
+						if (Error_Succeed != GetFunction()->SetTimer(RVC_CAMERA_OFF_TIMER, this, m_iDelayTime * 1000)) {
+							LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_SETTIMER_ERROR, "Call State is OffLine, and UIState is M, set camera off timer failed.");
+						}
+						else {
+							m_bCameraOffTimerOn = true;
+						}
 					}
 				}
 			}
@@ -331,7 +347,7 @@ DeviceTypeEnum CMediaControllerEntity::RvcGetDeviceType()
 	if (_stricmp(stStaticinfo.strMachineType, "RVC.Stand1SPlus") == 0) {
 		eType = eStand1SPlusType;
 	}
-	else if (stricmp(stStaticinfo.strMachineType, "RVC.CardStore") == 0 || stricmp(stStaticinfo.strMachineType, "RVC.CardPrinter") == 0) {
+	else if (_stricmp(stStaticinfo.strMachineType, "RVC.CardStore") == 0 || _stricmp(stStaticinfo.strMachineType, "RVC.CardPrinter") == 0) {
 		eType = eCardStore;
 	}
 	else {
@@ -432,6 +448,7 @@ ErrorCodeEnum CMediaControllerEntity::GetMediaConfig()
 	return Error;
 }
 
+
 ErrorCodeEnum CMediaControllerEntity::SetEnvCameraOnSysVar(const CSimpleStringA strOnState)
 {
 	ErrorCodeEnum Error = Error_Succeed;
@@ -521,7 +538,7 @@ void CMediaControllerEntity::OnTimeout(DWORD dwTimerID)
 			GetFunction()->KillTimer(2);
 		}
 	}
-	else if (3 == dwTimerID) {
+	else if (RVC_CAMERA_OFF_TIMER == dwTimerID) {
 		if (m_bStartCamera) {
 			CSimpleStringA strCallState("");
 			if (Error_Succeed == GetFunction()->GetSysVar(SYSVAR_CALLSTATE, strCallState)) {
@@ -534,8 +551,13 @@ void CMediaControllerEntity::OnTimeout(DWORD dwTimerID)
 						m_capture = NULL;
 					}
 					m_bStartCamera = false;
-					if (Error_Succeed != GetFunction()->KillTimer(3)) {
-						LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "Stop Camera, KillTimer 3 failed.");
+					if (m_bCameraOffTimerOn) {
+						if (Error_Succeed != GetFunction()->KillTimer(RVC_CAMERA_OFF_TIMER)) {
+							LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "stop camera, kill camera off timer failed.");
+						}
+						else {
+							m_bCameraOffTimerOn = false;
+						}
 					}
 				}
 			}
@@ -937,6 +959,15 @@ ErrorCodeEnum CMediaControllerEntity::StopAllCameras()
 	}
 	m_bStartCamera = false;
 
+	if (m_bCameraOffTimerOn) {
+		if (Error_Succeed != GetFunction()->KillTimer(RVC_CAMERA_OFF_TIMER)) {
+			LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "stop camera, kill camera off timer failed.");
+		}
+		else {
+			m_bCameraOffTimerOn = false;
+		}
+	}
+
 	return Error_Succeed;
 }
 
@@ -1224,6 +1255,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
 #endif // RVC_OS_WIN
 		}
 		break;
+
 	case MOD_EVENT_SNAPSHOT_START_CAPTURE_ENV:
 		{
 #ifdef RVC_OS_WIN
@@ -1238,6 +1270,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
 #endif // RVC_OS_WIN
 		} 
 		break;
+
 	case  MOD_EVENT_SNAPSHOT_START_CAPTURE_OPT:
 		{
 #ifdef RVC_OS_WIN
@@ -1252,6 +1285,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
 #endif // RVC_OS_WIN
 		}
 		break;
+
 	case  LOG_EVT_MOD_ASSISCHAN_STARTED_SUCCESS:
 		{
 			Sleep(800);
@@ -1282,8 +1316,13 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
 				}
 			}
 			else {
-				if (Error_Succeed != GetFunction()->KillTimer(3)) {
-					LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "begin handle business, and camera is already on, KillTimer 3 failed.");
+				if (m_bCameraOffTimerOn) {
+					if (Error_Succeed != GetFunction()->KillTimer(RVC_CAMERA_OFF_TIMER)) {
+						LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "begin handle business, and camera is already on, kill camera off timer failed.");
+					}
+					else {
+						m_bCameraOffTimerOn = false;
+					}
 				}
 			}
 		}
@@ -1292,8 +1331,13 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
 
 	case LOG_EVT_END_HANDLE_BUSINESS:
 		if (m_bStartCamera) {
-			if (Error_Succeed != GetFunction()->SetTimer(3, this, m_iDelayTime * 1000)) {
-				LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_SETTIMER_ERROR, "end handle business, SetTimer 3 failed.");
+			if (false == m_bCameraOffTimerOn) {
+				if (Error_Succeed != GetFunction()->SetTimer(RVC_CAMERA_OFF_TIMER, this, m_iDelayTime * 1000)) {
+					LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_SETTIMER_ERROR, "end handle business, set camera off timer failed.");
+				}
+				else {
+					m_bCameraOffTimerOn = true;
+				}
 			}
 		}
 		else {
@@ -1361,6 +1405,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
 			}
 		}
 		break;
+
 	default:
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("unknown event.");
 		break;
@@ -1780,7 +1825,7 @@ ErrorCodeEnum CMediaControllerEntity::GetAudioDevices(int& iAudioCount, CSimpleS
 	else {
 		iAudioCount = capture_get_audio_device_list(1, strAudioDev);
 	}
-	#else
+#else
 		if (NULL != m_pAudioCap) {
 		strAudioDev = "[";
 		if (1 == iAudioType) {
@@ -1814,7 +1859,7 @@ ErrorCodeEnum CMediaControllerEntity::GetAudioDevices(int& iAudioCount, CSimpleS
 
 		Error = Error_Succeed;
 	}
-	#endif
+#endif
 
 	return Error;
 }

+ 1 - 1
Module/mod_mediacontroller/mod_mediacontroller.h

@@ -125,7 +125,6 @@ public:
 	void LogTransactionRecordCtrEvt(int iEvtType);
 
 public:
-	bool m_bSendCameraError;
 	int m_iEnvEmptyTimes;
 	int m_iOptEmptyTimes;
 	int m_nEnvCameraRestartNum;
@@ -168,4 +167,5 @@ private:
 #endif
 	int m_iDelayTime;
 	int m_interValTime;
+	bool m_bCameraOffTimerOn;
 };

+ 7 - 12
Other/unix/libmediadeviceinfo/linux/videodevice_info_linux.cpp

@@ -220,18 +220,15 @@ int  rvc_videocap_get_device_fullpathname(int device_id, char* fullnamebuf, int
 	int fd = -1;
 
 	snprintf(device, MAX_PATH, "/dev/video%d", device_id);
-	if (-1 != (fd = open(device, O_RDONLY)))
-	{
+	if (-1 != (fd = open(device, O_RDONLY))){
 		// query device capabilities
 		struct v4l2_capability cap = { 0 };
-		if (ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0)
-		{
+		if (ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0){
 			close(fd);
 			return iret;
 		}
 
-		if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE))
-		{
+		if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)){
 			close(fd);
 			return iret;
 		}
@@ -252,18 +249,15 @@ int  rvc_videocap_get_device_fullpathname(int device_id, char* fullnamebuf, int
 		tFmtDesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 
 		while ((ioctl(fd, VIDIOC_ENUM_FMT, &tFmtDesc)) == 0) {
-			if (V4L2_PIX_FMT_YUYV == tFmtDesc.pixelformat || V4L2_PIX_FMT_RGB565 == tFmtDesc.pixelformat)
-			{
+			if (V4L2_PIX_FMT_YUYV == tFmtDesc.pixelformat || V4L2_PIX_FMT_RGB565 == tFmtDesc.pixelformat){
 				iPixelFormat = tFmtDesc.pixelformat;
 				break;
 			}
 			tFmtDesc.index++;
 		}
 
-		if (0 != iPixelFormat)
-		{
-			if (NULL != cap.bus_info && NULL != cap.card)
-			{
+		if (0 != iPixelFormat){
+			if (NULL != cap.bus_info && NULL != cap.card){
 				char strmd5[MAX_PATH] = { 0 };
 				snprintf(strmd5, MAX_PATH, "%s", cap.bus_info);
 				unsigned char x[MD5_DIGESTSIZE] = {0};
@@ -281,6 +275,7 @@ int  rvc_videocap_get_device_fullpathname(int device_id, char* fullnamebuf, int
 	return iret;
 }
 
+
 int  rvc_videocap_get_video_device_id(const char* dev_name)
 {
 	int iret = -1;

+ 0 - 9
addin/Readme.txt

@@ -1,9 +0,0 @@
-install[.sh|.bat] 用于全新安装版本场景
-upgrade[.sh|.bat] 用于更新版本的场景
-
-根据需求,二者选其一
-
-
-对于UOS设备的安装:
-1)脚本均需使用 root 权限运行
-2)请用命令行执行 ‘sudo bash ./install.sh’或 ‘sudo bash ./upgrade.sh’

+ 4 - 0
addin/packaging/UOS/Readme.txt

@@ -0,0 +1,4 @@
+执行 install.sh 用于安装和拷贝
+
+1)脚本均需使用 root 权限运行
+2)请用命令行执行 ‘sudo bash ./install.sh’

+ 0 - 0
addin/install.sh → addin/packaging/UOS/install.sh


+ 1 - 0
addin/packaging/WIN/Readme.txt

@@ -0,0 +1 @@
+Ö´ÐÐ install.bat ½øÐа²×°ºÍ¿½±´

+ 2 - 5
addin/install.bat → addin/packaging/WIN/install.bat

@@ -173,11 +173,8 @@ tasklist /nh | find /i "spshell.exe"
 @xcopy %rvc_src_path_Run_dir%\version %rvc_install_path_versions_dir%  /E/Y/Q
 @echo 【2/2】拷贝终端版本OK!
 
-@if not exist "%rvc_src_path_runbase_dir%" (
-	@echo [WARN]: 识别到无Runtime文件夹,跳过基本库分离安装流程
-	@goto SkipInstallRuntime
-)
-
+@rem 不再分离出基础库文件
+@goto SkipInstallRuntime
 @echo 运行时基础文件存放路径 %rvc_runtime_dir%
 @if exist %rvc_runtime_dir% rd /S /Q %rvc_runtime_dir%
 if not exist "%rvc_runtime_dir%" md "%rvc_runtime_dir%"

+ 248 - 0
addin/packaging/WIN/installbat.in

@@ -0,0 +1,248 @@
+@setlocal enabledelayedexpansion
+@echo off
+
+@rem 要求以管理员方式启动
+bcdedit >nul
+if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
+:UACPrompt
+%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
+exit /B
+:UACAdmin
+
+color 0F
+title 【可视柜台应用程序安装脚本】
+
+cd /d "%~dp0"
+
+@set /a argumentNum=0
+@set ret=0
+@rem 1 关机 2 重启
+@set poweroffPC=0
+@set /a installType=0
+@for %%a in (%*) do set /a argumentNum+=1
+@if %argumentNum% gtr 0 (
+	@echo argument count: %argumentNum%
+) else (
+	@echo no any arguments
+)
+@set installType=@INSTALLSCRIPT_TYPE@
+echo [RVCTermianal] ========== Install Start ==========
+
+@set ROOT=%cd%
+@set rvc_src_path_rvc_dir=%ROOT%\rvc
+@set rvc_src_path_Run_dir=%ROOT%\Run
+@set rvc_src_path_runbase_dir=%ROOT%\Runtime
+@set rvc_install_path_root=C:
+@set sysdisk=1
+@if exist "D:\\" (
+	@if exist "D:\\Run\\version\\vtm.exe" (
+		@set rvc_install_path_root=D:
+		@set sysdisk=0
+	) else (
+		@set rvc_install_path_root=D:
+		@set sysdisk=0
+	)
+) else (
+	@set rvc_install_path_root=C:
+)
+@set rvc_runtime_dir=%rvc_install_path_root%\VTMDepencies
+
+@echo install type: %installType%
+@if %installType% neq 1 (
+	@if %installType% neq 4 (
+		@echo 跳过设置开机自启动
+		@goto SkipAutostartSet
+	)
+)
+
+@echo 读取注册表信息,判断是否已经设置开机自启动,如果未设置或者之前设置为脚本自启动,修改为通过VTM.exe自启动
+@set regFile=%TEMP%\rvc_spshellautostart.reg
+@set regTmpFile=%cd%\rvckey.txt
+@set explorerKey=
+@set needSetAutoStartFlag=1
+@set explorerNormal=0
+regedit /e %regFile% "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
+@rem 每个包含在字符串内的引号必须使用两个双引号括起来
+@type %regFile% | find /I """Shell""=" > %regTmpFile%
+@for /f "usebackq delims== tokens=2" %%a in (%regTmpFile%) do (
+	@set explorerKey=%%~a
+)
+@del %regFile%
+@del %regTmpFile%
+@echo original explorer key:%explorerKey%
+@for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set explorerKey=%%explorerKey:%%i=%%i%%
+@echo explorer key:%explorerKey%
+
+@if "%explorerKey%" == "explorer.exe" (
+	@echo 检测到未设置为开机自启动模式
+	@set explorerNormal=1
+) else if "%explorerKey%" == "d:\\run\\version\\vtm.exe" (
+	@echo 检测到已设置为VTM.exe开机自启动模式
+	@set needSetAutoStartFlag=0
+) else if "%explorerKey%" == "wscript d:\\run\\version\\spexplorerfast.vbs" (
+	@echo 检测到已设置为VBS脚本开机自启动模式
+)
+
+@if %installType% equ 1 (
+	@if %needSetAutoStartFlag% equ 1 (
+		@echo 设置可视柜台应用程序开机自启动(同时屏蔽桌面)
+		@echo 临时存储设置开机自启动的注册表脚本
+		@echo Windows Registry Editor Version 5.00 > %regFile%
+		@echo. >> %regFile%
+		@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> %regFile%
+		@if %sysdisk% equ 1 ( echo "Shell"="c:\\run\\version\\vtm.exe" >> %regFile% ) else ( echo "Shell"="d:\\run\\version\\vtm.exe" >> %regFile% )
+		@echo "Shell1"="explorer.exe" >> %regFile%
+		@echo 更新注册表!
+		regedit /s %regFile%
+		@del %regFile%
+		@rem @set poweroffPC=2
+	)
+)
+
+@if %installType% equ 4 (
+	@if %explorerNormal% neq 1 (
+		@echo 取消可视柜台应用程序开机自启动(同时恢复桌面)
+		@echo 临时存储取消开机自启动的注册表脚本
+		@echo Windows Registry Editor Version 5.00 > %regFile%
+		@echo. >> %regFile%
+		@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> %regFile%
+		@echo "Shell1"="d:\\run\\version\\vtm.exe" >> %regFile%
+		@echo "Shell"="explorer.exe" >> %regFile%
+		@echo 更新注册表!
+		regedit /s %regFile%
+		@del %regFile%
+		@rem @set poweroffPC=2
+	)
+)
+
+@echo 结束设置可视柜台应用程序开机自启动策略
+:SkipAutostartSet
+
+tasklist /nh | find /i "spshell.exe"
+@if errorlevel 1 (
+	@echo [INFO] 可视柜台进程不存在,跳过进程清理
+) else (
+	@echo [INFO] 检测到可视柜台进程存在!5s 后将清理可视柜台相关进程
+	@for /l %%a in (1, 1, 5) do (
+		timeout 1 > nul
+		@echo %%a秒…… 如果不想清理可视柜台应用进程,请及时关闭此窗口!
+	)
+	@echo [INFO] 开始清理可视柜台相关进程……
+	TASKKILL /F /IM spshell.exe
+	TASKKILL /F /IM guardian.exe
+	TASKKILL /F /IM cefclient.exe
+
+	@for /f "tokens=1,2 delims= " %%a in ('tasklist /m ^| findstr "sphost.exe"') do (
+		@echo name=%%a, PID = %%b, and will kill it.
+		TASKKILL /F /PID %%a
+	)
+)
+
+@echo rvc_install_path_root=%rvc_install_path_root%
+@echo rvc_src_path_Run_dir=%rvc_src_path_Run_dir%
+
+@set rvc_install_path_rvc_dir=%rvc_install_path_root%\rvc
+@set rvc_install_path_Run_dir=%rvc_install_path_root%\Run
+@set rvc_install_path_hardware_dir=%rvc_install_path_Run_dir%\hardwarecfg
+@set rvc_install_path_versions_dir=%rvc_install_path_Run_dir%\version
+
+@echo rvc_install_path_rvc_dir=%rvc_install_path_rvc_dir%
+@echo rvc_install_path_Run_dir=%rvc_install_path_Run_dir%
+@echo rvc_install_path_hardware_dir=%rvc_install_path_hardware_dir%
+@echo rvc_install_path_versions_dir=%rvc_install_path_versions_dir%
+
+@if not exist "%rvc_install_path_rvc_dir%" md "%rvc_install_path_rvc_dir%"
+@if not exist "%rvc_install_path_Run_dir%" md "%rvc_install_path_Run_dir%"
+@if not exist "%rvc_install_path_hardware_dir%" md "%rvc_install_path_hardware_dir%"
+@if not exist "%rvc_install_path_versions_dir%" md "%rvc_install_path_versions_dir%"
+
+@echo 【0/1】拷贝RVC目录...
+@xcopy %rvc_src_path_rvc_dir% %rvc_install_path_rvc_dir%  /E/Y/Q
+@echo 【1/1】拷贝RVC目录OK!
+
+
+@echo 【1/2】拷贝终端版本...
+@if exist %rvc_src_path_Run_dir%\hardwarecfg ( xcopy %rvc_src_path_Run_dir%\hardwarecfg %rvc_install_path_hardware_dir%  /E/Y/Q )
+@xcopy %rvc_src_path_Run_dir%\version %rvc_install_path_versions_dir%  /E/Y/Q
+@echo 【2/2】拷贝终端版本OK!
+
+@rem 不再分离出基础库文件
+@goto SkipInstallRuntime
+@echo 运行时基础文件存放路径 %rvc_runtime_dir%
+@if exist %rvc_runtime_dir% rd /S /Q %rvc_runtime_dir%
+if not exist "%rvc_runtime_dir%" md "%rvc_runtime_dir%"
+
+@echo 【2/3】拷贝基础运行时依赖文件...
+@xcopy %rvc_src_path_runbase_dir% %rvc_runtime_dir%  /E/Y/Q
+@echo 【3/3】拷贝基础运行时依赖文件OK!
+
+@echo 【3/4】设置系统环境变量...
+@set OldPath=%PATH%
+@set /a maxlen=1024
+@set /a num=0
+@set /a updateFlag=0
+@echo current path: %OldPath%
+@echo "%OldPath%" | findstr "%rvc_runtime_dir%" > nul && (
+	@echo [INFO]: 系统变量中已包含基础运行库文件目录路径
+) || (
+	@echo [INFO]: 系统变量中不包含基础运行库文件目录路径,开始设置...
+	@call :stringLenth "%OldPath%" num
+	@set updateFlag=1
+)
+@if %updateFlag% equ 1 (
+	@echo [DEBUG]: length: %num%
+	@if %num% geq 1024 (
+		@echo [ERROR] 已有的环境变量内容大于1024,无法通过程序更新系统环境PATH,请手工将值%rvc_runtime_dir%添加到PATH系统环境中,然后再运行此安装脚本
+		@goto InstallError
+	)
+)
+
+@echo 【4/4】设置系统环境变量成功
+
+:SkipInstallRuntime
+
+@echo 【5/5】 打开版本所在文件夹
+@start %rvc_install_path_versions_dir%
+
+
+@goto End
+:InstallError
+@set ret=1
+
+:End
+
+
+@if "%ret%" == "1" (
+	@echo [ERROR]: 安装失败,具体失败步骤见上方描述!!
+) else (
+	@if %poweroffPC% equ 2 ( echo [INFO]: 3s 后自动重启设备 )
+	@if %poweroffPC% equ 1 ( echo [INFO]: 3s 后自动关机 )
+	@if %poweroffPC% equ 0 ( echo [INFO]: 3s 后自动退出该执行脚本 )
+	@for /l %%a in (1, 1, 3) do (
+			timeout 1 > nul
+			@echo [DEBUG]: %%a秒……
+		)
+	@if %poweroffPC% equ 2 ( shutdown /r /t 0 )
+	@if %poweroffPC% equ 1 ( shutdown /s /t 0 )
+	@if %poweroffPC% equ 0 ( echo [INFO]: === 所有步骤执行成功,正常退出=== )	
+)
+
+@exit %ret%
+
+:stringLenth
+	@set thestring=%~1
+	@if not defined theString (
+		@set Return=0
+		@set %2=0
+		@goto :eof
+	)
+	@set Return=0
+	
+:stringLenth_continue
+	@set /a Return+=1
+	@set thestring=%thestring:~0,-1%
+	@if defined thestring goto stringLenth_continue
+	@if not "%2"=="" set %2=%Return%
+	@goto :eof
+
+

+ 0 - 0
addin/kill.bat → addin/packaging/WIN/kill.bat


+ 0 - 97
addin/upgrade.bat

@@ -1,97 +0,0 @@
-@setlocal enabledelayedexpansion
-@echo off
-
-@rem 要求以管理员方式启动
-bcdedit >nul
-if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
-:UACPrompt
-%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
-exit /B
-:UACAdmin
-cd /d "%~dp0"
-
-@set /a argumentNum=0
-@for %%a in (%*) do set /a argumentNum+=1
-@if %argumentNum% gtr 0 (
-	@echo argument count: %argumentNum%
-) else (
-	@echo no any arguments!
-)
-
-echo "[RVCTermianal] === Install Start === "
-
-tasklist /nh | find /i "spshell.exe"
-@if errorlevel 1 (
-	@echo  [INFO] 可视柜台进程不存在,跳过
-) else (
-	@echo  [INFO] 检测到可视柜台进程存在!5s 后将清理可视柜台相关进程
-	@for /l %%a in (1, 1, 5) do (
-		timeout 1 > nul
-		@echo %%a秒…… 如果不想清理可视柜台应用进程,请及时关闭此窗口!
-	)
-	@echo [INFO] 开始清理可视柜台相关进程……
-	TASKKILL /F /IM spshell.exe
-	TASKKILL /F /IM guardian.exe
-	TASKKILL /F /IM cefclient.exe
-
-	@for /f "tokens=1,2 delims= " %%a in ('tasklist /m ^| findstr "sphost.exe"') do (
-		@echo name=%%a, PID = %%b, and will kill it.
-		TASKKILL /F /PID %%a
-	)
-)
-
-@set ROOT=%cd%
-@set rvc_src_path_rvc_dir=%ROOT%\rvc
-@set rvc_src_path_Run_dir=%ROOT%\Run
-@set rvc_install_path_root=C:
-
-@if exist "D:\\" (
-	@echo "D:\\ exists!"
-	@if exist "D:\\Run\\version\\vtm.exe" (
-		@set rvc_install_path_root=D:
-	) else (
-		@set rvc_install_path_root=D:
-	)
-) else (
-	@set rvc_install_path_root=C:
-)
-
-@echo rvc_install_path_root=%rvc_install_path_root%
-@echo rvc_src_path_Run_dir=%rvc_src_path_Run_dir%
-
-@set rvc_install_path_rvc_dir=%rvc_install_path_root%\rvc
-@set rvc_install_path_Run_dir=%rvc_install_path_root%\Run
-@set rvc_install_path_hardware_dir=%rvc_install_path_Run_dir%\hardwarecfg
-@set rvc_install_path_versions_dir=%rvc_install_path_Run_dir%\version
-
-@echo rvc_install_path_rvc_dir=%rvc_install_path_rvc_dir%
-@echo rvc_install_path_Run_dir=%rvc_install_path_Run_dir%
-@echo rvc_install_path_hardware_dir=%rvc_install_path_hardware_dir%
-@echo rvc_install_path_versions_dir=%rvc_install_path_versions_dir%
-
-@if not exist "%rvc_install_path_rvc_dir%" md "%rvc_install_path_rvc_dir%"
-@if not exist "%rvc_install_path_Run_dir%" md "%rvc_install_path_Run_dir%"
-@if not exist "%rvc_install_path_hardware_dir%" md "%rvc_install_path_hardware_dir%"
-@if not exist "%rvc_install_path_versions_dir%" md "%rvc_install_path_versions_dir%"
-
-@echo 【0/1】拷贝RVC目录...
-@xcopy %rvc_src_path_rvc_dir% %rvc_install_path_rvc_dir%  /E/Y/Q
-@echo 【1/1】拷贝RVC目录OK!
-
-
-@echo 【1/2】拷贝终端版本...
-@if exist %rvc_src_path_Run_dir%\hardwarecfg ( xcopy %rvc_src_path_Run_dir%\hardwarecfg %rvc_install_path_hardware_dir%  /E/Y/Q )
-@xcopy %rvc_src_path_Run_dir%\version %rvc_install_path_versions_dir%  /E/Y/Q
-@echo 【2/2】拷贝终端版本OK!
-
-
-@echo 【2/3】 打开版本所在文件夹
-@start %rvc_install_path_versions_dir%
-
-@echo  [INFO] 3s 后自动退出该执行脚本
-@for /l %%a in (1, 1, 3) do (
-		timeout 1 > nul
-		@echo %%a秒…… !
-	)
-@echo  [INFO] 退出脚本,拷贝更新版本结束!
-@exit 0

+ 0 - 92
addin/upgrade.sh

@@ -1,92 +0,0 @@
-#!/bin/bash
-MY_PATH="`dirname \"$0\"`"              # relative
-# echo "1"$MY_PATH
-MY_PATH="`( cd \"$MY_PATH\" && pwd )`"  # absolutized and normalized
-
-
-echo "[RVCTermianal] === Install Start === "
-rvc_install_path_root="/opt"
-rvc_install_path_rvc_dir=${rvc_install_path_root}/rvc
-rvc_install_path_Run_dir=${rvc_install_path_root}/Run
-rvc_install_path_hardware_dir=${rvc_install_path_Run_dir}/hardwarecfg
-rvc_install_path_versions_dir=${rvc_install_path_Run_dir}/version
-
-# check root priviledge
-if [ $(id -u) != 0 ]; then
-    echo "[ERROR] === 该安装脚本需要以ROOT权限启动,请在命令行窗口添加sudo指令执行 'sudo bash $0',如果无法执行相关指令,请先确认系统已开启开发者模式 ==="
-    exit 0
-fi
-
-argument1=
-if [ $# -eq 1 ];then
-    echo has arguments: $*
-	argument1=$(echo $1 | awk '{ print tolower($0) }' )
-else
-    echo no any arguments.
-fi
-
-if [ "$argument1" = "pure" ]; then
-    killall -9 spshell > /dev/null 2>&1
-    killall -9 sphost > /dev/null 2>&1
-    killall -9 guardian > /dev/null 2>&1
-    killall -9 uosbrowser > /dev/null 2>&1
-	killall -9 browser > /dev/null 2>&1
-    killall -s 9 `ps -aux | grep browser | awk '{print $2}'` > /dev/null 2>&1
-fi
-
-# fetch the version full path at pkg
-version_dir=$(find ${MY_PATH}/Run/version/ -maxdepth 1 -regex ".*[0-9\.]$" -type d)
-echo version dir: $version_dir
-slen=${#MY_PATH}
-rel_version_dir=${version_dir:$slen+1}
-echo ${rel_version_dir}
-
-if [ ! -f $rvc_install_path_hardware_dir/root.ini ]; then
-    #delete /opt/Run
-    sudo rm -rf ${rvc_install_path_Run_dir}
-else
-    echo root.ini 文件已存在,跳过清除 Run 文件夹.
-    if [ -f ${MY_PATH}/Run/hardwarecfg/root.ini ]; then
-        sudo rm ${MY_PATH}/Run/hardwarecfg/root.ini
-    fi
-    if [ -d ${MY_PATH}/Run/runinfo ]; then
-        sudo rm -rf ${MY_PATH}/Run/runinfo
-    fi
-fi
-
-#copy the Run pkg to run path
-echo to copy Run package...
-if [ ! -d $rvc_install_path_Run_dir ]; then
-    sudo mkdir -p ${$rvc_install_path_Run_dir}
-fi
-sudo cp -rvf $MY_PATH/Run ${rvc_install_path_root}
-echo copy Run package completely!
-
-#copy the res pkg to rvc path
-echo to copy rvc Audio files...
-if [ ! -d $rvc_install_path_rvc_dir ]; then
-    sudo mkdir -p ${rvc_install_path_rvc_dir}
-fi
-if [ ! -d $rvc_install_path_rvc_dir/adData ]; then
-    sudo mkdir -p ${rvc_install_path_rvc_dir}/adData
-fi
-sudo cp -rvf $MY_PATH/rvc/adData/Audio ${rvc_install_path_rvc_dir}/adData
-echo copy rvc Audio files completely!
-#sudo cp -rvf $MY_PATH/rvc/adData/Video ${rvc_install_path_rvc_dir}/adData
-#echo copy rvc Video files completely!
-
-echo change the run scripts priviledge...
-echo ${rvc_install_path_rvc_dir}
-echo ${rvc_install_path_root}/${rel_version_dir}
-sudo chmod 777 ${rvc_install_path_root}
-sudo chmod a+rw -R ${rvc_install_path_rvc_dir}
-sudo chmod a+rw -R ${rvc_install_path_hardware_dir}
-sudo chmod 777 -R ${rvc_install_path_root}/${rel_version_dir}
-sudo chmod 777 ${rvc_install_path_versions_dir}/spexplorer.sh
-sudo chmod 777 ${rvc_install_path_versions_dir}/sudo_spexplorer.sh
-sudo chmod a+rw ${rvc_install_path_versions_dir}/active.txt
-echo change the run scripts priviledge done!
-
-echo "[RVCTermianal] === Install Done ! === "
-echo "[RVCTermianal] === 所有步骤执行成功,正常退出=== "
-exit 0