📄 installdlg.cpp
字号:
{
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 + -