⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 installdlg.cpp

📁 T3G的TD-SCDMA平台的驱动安装
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		{
			CString strtmp = "已经安装V" + str + "版本的程序";
			AfxMessageBox(strtmp);	
			Eject();
		}
	}
	else
	{
		//没有安装, 直接安装
		CString strtmpFile;
		strtmpFile = m_strTempPath + "eWalk_Olympics.exe";
		WinExec(strtmpFile, SW_SHOW); 
		
	}
//	m_btInstall.EnableWindow(TRUE);
	
	
}
//------------------------------------------------------------------------------
//	created:	2008-5-20  15:29
//	author:		xqzhou
//	
//	
//------------------------------------------------------------------------------
void CInstallDlg::AutoRunEject()
{
	CRegOperate regOp; //定义一个注册表操作对象
	CRegOperate::err e; //定义一个错误枚举变量,用来标识注册表操作结果
	CString str = "";  //查询得到的注册表项的值
	//获取版本
	CString strTempVer;
	BOOL bDrv = FALSE;
	BOOL bWalk = FALSE;
	BOOL bIsNewApp = FALSE;
	BOOL bIsNewDriver = FALSE;
	//查询注册表项值
	e = regOp.GetStrValue((HKEY)regOp.DHKEY_LOCAL_MACHINE, "SOFTWARE\\WICOM\\eWalk\\", "InstallVersion", str);
	if (str.GetLength() > 0) 
	{
		str = "";
		bDrv = TRUE;
		bIsNewDriver = IsNewDriver();
	}

	e = regOp.GetStrValue((HKEY)regOp.DHKEY_LOCAL_MACHINE, "SOFTWARE\\China Mobile\\eWalk", "version", str);
	
	if (str.GetLength() > 0) 
	{
		str = "";
		bWalk = TRUE;
		bIsNewApp = IsNewApp();
	}
	//是在没有新的驱动和随意行版本安装的情况下运行
	if( bDrv && !bIsNewDriver && bWalk && !bIsNewApp)
	{
		Eject();
		CString strExe;
		CString strPath;
		CString strPathName;
		e = regOp.GetStrValue((HKEY)regOp.DHKEY_LOCAL_MACHINE, "SOFTWARE\\China Mobile\\eWalk", "ExePath", strPath);
		e = regOp.GetStrValue((HKEY)regOp.DHKEY_LOCAL_MACHINE, "SOFTWARE\\China Mobile\\eWalk", "ExeName", strExe);
		strPathName = strPath + "\\" + strExe;
		WinExec(strPathName, SW_SHOW);
		return;
	}
	//是否要拷贝随意行,减少安装速度, 
	if(bIsNewApp || !bWalk)
	{
		//有新版本的随意行,或者没有安装的情况下需要拷贝
		CopyFileToTempDir(TRUE);
	}
	else
	{
		CopyFileToTempDir(FALSE);
	}
	Eject();
	
	
	if(!bWalk || ( bWalk && bIsNewApp))
	{
		//安装随意行
		OnButtonEwalk();
	}	
	if(!bDrv || ( bDrv && bIsNewDriver))
	{
		//安装驱动
		OnButtonInstall();
	}
}
//------------------------------------------------------------------------------
//Create 2008-5-23 10:29 
//Creator xqzhou 
//
//function: 判断是否是新的驱动
//
//------------------------------------------------------------------------------
BOOL CInstallDlg::IsNewDriver()
{
	CRegOperate regOp; //定义一个注册表操作对象
	CRegOperate::err e; //定义一个错误枚举变量,用来标识注册表操作结果
	CString str = "";  //查询得到的注册表项的值
	//获取版本
	CString strTempVer = m_strDriverVersion;
	//查询注册表项值
	e = regOp.GetStrValue((HKEY)regOp.DHKEY_LOCAL_MACHINE, "SOFTWARE\\WICOM\\eWalk\\", "InstallVersion", str);
	if(e == CRegOperate::ERR_SUCCESS)
	{
		if(strTempVer > str)
		{
			return TRUE;			
		}
		else
		{
			return FALSE;
		}
	}
	else
	{
		return FALSE;
		
	}
	
}
//------------------------------------------------------------------------------
//Create 2008-5-23 10:29 
//Creator xqzhou 
//
//function: 判断是否是新的随意行
//
//------------------------------------------------------------------------------
BOOL CInstallDlg::IsNewApp()
{
	CRegOperate regOp; //定义一个注册表操作对象
	CRegOperate::err e; //定义一个错误枚举变量,用来标识注册表操作结果
	CString str = "";  //查询得到的注册表项的值
	//获取版本
	CString strTempVer = m_strEwalkVersion;
	//查询注册表项值
	e = regOp.GetStrValue((HKEY)regOp.DHKEY_LOCAL_MACHINE, "SOFTWARE\\China Mobile\\eWalk", "version", str);
	if(e == CRegOperate::ERR_SUCCESS)
	{
		if(strTempVer > str)
		{
			return TRUE;			
		}
		else
		{
			return FALSE;
		}
	}
	else
	{
		return FALSE;
		
	}
	
}
//------------------------------------------------------------------------------
//Create 2008-5-29 9:48 
//Creator xqzhou 
//
//function: 拷贝文件到临时目录,并且执行安装
//
//------------------------------------------------------------------------------
void CInstallDlg::CopyFileToTempDir(BOOL bWalk)
{
	
	CString strTempPathName;
	CString strFileName;
	//AfxMessageBox(m_strTempPath);
	if(bWalk)	
	{
		strFileName = "eWalk_Olympics.exe";
		strTempPathName = m_strTempPath + strFileName;
		CopyFile(strFileName, strTempPathName, FALSE);	
	}
	strFileName = "psdfbus.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfbus.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfcmnt.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfgench0.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfgench1.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfgench2.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfmdfl.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfmdm.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfmdm2.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfmgmt.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfobex.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfobx2.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfsdm2.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdftat.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdftat2.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdftrce.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdftrce2.inf";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	strFileName = "psdfwhnt.sys";
	strTempPathName = m_strTempPath + strFileName;
	CopyFile(strFileName, strTempPathName, FALSE);	
	
	//strFileName = "updata.ini";
	//strTempPathName = m_strTempPath + strFileName;
	//CopyFile(strFileName, strTempPathName, FALSE);	
}
//------------------------------------------------------------------------------
//Create 2008-5-29 10:18 
//Creator xqzhou 
//
//function: 安装驱动
//
//------------------------------------------------------------------------------
void CInstallDlg::Installdriver()
{
/*	CString strtmpFile;
	strtmpFile = m_strTempPath + "driver.exe";
	WinExec(strtmpFile, SW_SHOW);
*/	
	
	CString strPathFile; 
	CString strInfFile ; 
	
	HMODULE newdevMod = NULL;
    UpdateDriverForPlugAndPlayDevicesProto UpdateFn;
	//    BOOL reboot = FALSE;
	BOOL reboot = TRUE;
    LPCTSTR hwid = NULL;
    LPCTSTR inf = NULL;
    DWORD flags = 0;
    flags |= INSTALLFLAG_FORCE;
    //
    // make use of UpdateDriverForPlugAndPlayDevices
    //
	Sleep(15000);
    newdevMod = LoadLibrary(TEXT("newdev.dll"));
    if(!newdevMod) {
        AfxMessageBox("no load newdev.dll");
    }
    UpdateFn = (UpdateDriverForPlugAndPlayDevicesProto)GetProcAddress(newdevMod,UPDATEDRIVERFORPLUGANDPLAYDEVICES);
    if(!UpdateFn)
    {
        AfxMessageBox("GetProcAddress error");
    }
	strInfFile = "psdfbus.inf"; 
	strPathFile = m_strTempPath + strInfFile;
	CString strHardID = "USB\\VID_04cc&PID_2250"; 
	//AfxMessageBox(strPathFile);
	//	if(!UpdateFn(NULL,hwid,inf,flags,&reboot)) {
    if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
        AfxMessageBox("UpdateFn error8");
    }
	Sleep(5000);
    
	strInfFile = "psdfmdm2.inf"; 
	strPathFile = m_strTempPath + strInfFile;
   strHardID = "USB\\VID_04cc&PID_2250&MI_01"; 
	
    if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
        AfxMessageBox("UpdateFn error7");
    }
	Sleep(5000);
	strInfFile = "psdfobx2.inf"; 
	strPathFile = m_strTempPath + strInfFile;
   strHardID = "USB\\VID_04cc&PID_2250&MI_05"; 
	
    if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
        AfxMessageBox("UpdateFn error5");
    }
	
	Sleep(5000);
	strInfFile = "psdfsdm2.inf"; 
	strPathFile = m_strTempPath + strInfFile;
    strHardID = "USB\\VID_04cc&PID_2250&MI_03"; 
    if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
        AfxMessageBox("UpdateFn error6");
    }

	Sleep(5000);
	
	strInfFile = "psdftrce2.inf"; 
	strPathFile = m_strTempPath + strInfFile;
    strHardID = "USB\\VID_04cc&PID_2250&MI_07"; 
	
    if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
        AfxMessageBox("UpdateFn error3");
    }
	Sleep(5000);

	strInfFile = "psdftat2.inf"; 
	strPathFile = m_strTempPath + strInfFile;
    strHardID = "USB\\VID_04cc&PID_2250&MI_09"; 
	
    if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
        AfxMessageBox("UpdateFn error4");
    }
	/*
	Sleep(1000);
	strInfFile = "psdfgench0.inf"; 
    strHardID = "USB\\VID_04cc&PID_2250&Class_02&SubClass_0A&Prot_82&OS_NT"; 
	
	  if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
	  AfxMessageBox("UpdateFn error2");
	  }
	  Sleep(1000);
	  strInfFile = "psdfgench1.inf"; 
	  strPathFile = m_strTempPath + strInfFile;
	  strHardID = "USB\\VID_04cc&PID_2250&Class_02&SubClass_0A&Prot_83&OS_NT"; 
	  
		if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
        AfxMessageBox("UpdateFn error1");
		}
		Sleep(1000);
		strInfFile = "psdfgench2.inf"; 
		strPathFile = m_strTempPath + strInfFile;
		strHardID = "USB\\VID_04cc&PID_2250&Class_02&SubClass_0A&Prot_84&OS_NT"; 
		  if(!UpdateFn(NULL,strHardID,strPathFile,flags,&reboot)) {
		  AfxMessageBox("UpdateFn error0");
		  }
	
	if(newdevMod) {
        FreeLibrary(newdevMod);
    }

//*/	
}
//------------------------------------------------------------------------------
//Create 2008-5-29 10:50 
//Creator xqzhou 
//
//function: 初始化
//
//------------------------------------------------------------------------------
void CInstallDlg::Init()
{
	char path[MAX_PATH];         //MAX_PATH
	GetTempPath(MAX_PATH,   path);   
	m_strTempPath = path;
	
	m_strInstallMessage = "";
	//m_btInstall.EnableWindow(FALSE);
	//m_btEject.EnableWindow(FALSE);
	char verion[10];
	::GetPrivateProfileString("install", "ewalk", "3.0.0.0",verion,10,".\\update.ini");
	m_strEwalkVersion = verion;

	char verion1[10];
	::GetPrivateProfileString("install", "version", "3.0.0.0",verion1,10,".\\update.ini");
	m_strDriverVersion = verion1;
	
	//UpdateData(FALSE);
	AutoRunEject();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -