www.pudn.com > WZ_UpdateModule_DLL.rar > Update.cpp
#include "WZ_UM.h"
#include "ReadScript.h"
#include "resource.h"
#include "UpdateDefine.h"
#include "Tlhelp32.h"
#include ".\wz_um.h"
///////////////////////////////////////////////////////////////////////////////////////
/*
±âº» ¾÷µ¥ÀÌÆ® Ŭ·¡½º : ÀÌ Å¬·¡½º¿¡¼ FTP ¿Í HTTP ¾÷µ¥ÀÌÆ® Ŭ·¡½º°¡ »ó¼Ó ¹Þ´Â´Ù.
*/
WZ_DECLAREDLL CWZUpdateModule::CWZUpdateModule()
{
InitializeCriticalSection (& m_critERROR_MSG);
memset (m_szIPADDR, '\0', sizeof(m_szIPADDR));
m_wPORT = 0;
memset (m_szID, '\0', sizeof(m_szID));
memset (m_szPASS, '\0', sizeof(m_szPASS));
m_lpFN_EventCallbackProc = NULL;
m_iCurrentState = STATE_DISCONNECTED;
m_bCancelUpdate = FALSE;
m_uUpdateFolderCount = 0;
m_strtUpdatingFileInfo.lpszErrorMsg = m_szLastErrorMsg;
m_bUseEventProc = FALSE;
m_nUpdateThreadID = 0;
m_bLoadUpdateInfo = FALSE;
m_nServerNumber = 0;
}
WZ_DECLAREDLL CWZUpdateModule::CWZUpdateModule (LPSTR lpszIPADDR, WORD wPORT, LPSTR lpszID, LPSTR lpszPASS)
{
InitializeCriticalSection (& m_critERROR_MSG);
strcpy (m_szIPADDR, lpszIPADDR);
m_wPORT = wPORT;
strcpy (m_szID, lpszID);
strcpy (m_szPASS, lpszPASS);
m_lpFN_EventCallbackProc = NULL;
m_iCurrentState = STATE_DISCONNECTED;
m_bCancelUpdate = FALSE;
m_uUpdateFolderCount = 0;
m_strtUpdatingFileInfo.lpszErrorMsg = m_szLastErrorMsg;
m_bUseEventProc = FALSE;
m_nUpdateThreadID = 0;
m_bLoadUpdateInfo = FALSE;
m_nServerNumber = 0;
}
WZ_DECLAREDLL CWZUpdateModule::~CWZUpdateModule()
{
DeleteCriticalSection(&m_critERROR_MSG);
}
WZ_DECLAREDLL VOID CWZUpdateModule::SetLastErrorMsg (INT iERROR_MODE, INT iERROR_CODE, LPSTR szUSER_MSG)
{
EnterCriticalSection (& m_critERROR_MSG);
DWORD dwERROR_CODE = iERROR_CODE;
DWORD dwBUFFER_LEN = sizeof(m_szLastErrorMsg);
switch (iERROR_MODE)
{
case CWZUpdateModule::ERROR_SYSTEM :
if (iERROR_CODE >= 12000)
InternetGetLastResponseInfo (&dwERROR_CODE, m_szLastErrorMsg, &dwBUFFER_LEN);
else
FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, iERROR_CODE, 0, m_szLastErrorMsg, sizeof (m_szLastErrorMsg), NULL);
m_iLastErrorMode = CWZUpdateModule::ERROR_SYSTEM;
m_strtUpdatingFileInfo.iErrorCode = iERROR_CODE;
break;
case CWZUpdateModule::ERROR_USER :
strcpy (m_szLastErrorMsg, szUSER_MSG);
m_iLastErrorMode = CWZUpdateModule::ERROR_USER;
m_strtUpdatingFileInfo.iErrorCode = 0;
break;
default :
m_szLastErrorMsg[0] = '\0';
m_iLastErrorMode = CWZUpdateModule::ERROR_NONE;
m_strtUpdatingFileInfo.iErrorCode = 0;
break;
}
AddEvent( EVENT_ERROR );
LeaveCriticalSection (& m_critERROR_MSG);
}
WZ_DECLAREDLL const LPSTR CWZUpdateModule::GetLastErrorMsg()
{
return m_szLastErrorMsg;
}
WZ_DECLAREDLL const INT CWZUpdateModule::GetLastErrorCode()
{
return m_iLastErrorCode;
}
WZ_DECLAREDLL unsigned __stdcall CWZUpdateModule::UpdateWorkerThread (LPVOID lpParam)
{
CWZUpdateModule * lpWZUM = (CWZUpdateModule *) lpParam;
if ( lpWZUM->UpdateRun() == TRUE )
lpWZUM->AddEvent( EVENT_UPDATE_END_SUCCESS );
else
lpWZUM->AddEvent( EVENT_UPDATE_END_FAIL );
return 0;
}
WZ_DECLAREDLL BOOL CWZUpdateModule::LoadLocalVerInfo()
{
if( IsUpdateInfoLoad() )
{
byte byVer[3];
GetVersionFromString( m_info.m_szServerVer[m_nServerNumber], byVer[0], byVer[1], byVer[2] );
m_btLocalVer1 = byVer[0];
m_btLocalVer2 = byVer[1];
m_btLocalVer3 = byVer[2];
m_uLocalTotalVersion = GetTotalVersion( m_btLocalVer1, m_btLocalVer2, m_btLocalVer3 );
}
else
return FALSE;
return TRUE;
}
WZ_DECLAREDLL BOOL CWZUpdateModule::SaveLocalVerInfo()
{
return m_info.SaveVersionInfo( m_btLocalVer1, m_btLocalVer2, m_btLocalVer3, m_nServerNumber );
}
WZ_DECLAREDLL BOOL CWZUpdateModule::CheckVersion(LPSTR lpszFilePath)
{
if ( (!lpszFilePath) || (!strcmp(lpszFilePath, "")))
return FALSE;
m_uUpdateFolderCount = 0;
SMDToken Token;
__try
{
if( (SMDFile = fopen(m_szVersionFileName, "r")) == NULL )
return FALSE;
while(TRUE)
{
Token = (*GetToken)();
if( Token == END )
break;
if( Token == NAME )
{
strcpy(m_strtUpdateFolderInfo[m_uUpdateFolderCount].m_szFolderName, TokenString);
byte byVer[3];
GetVersionFromString( TokenString, byVer[0], byVer[1], byVer[2] );
m_strtUpdateFolderInfo[m_uUpdateFolderCount].m_btVer1 = byVer[0];
m_strtUpdateFolderInfo[m_uUpdateFolderCount].m_btVer2 = byVer[1];
m_strtUpdateFolderInfo[m_uUpdateFolderCount].m_btVer3 = byVer[2];
m_strtUpdateFolderInfo[m_uUpdateFolderCount].m_uTotalVersion = GetTotalVersion( byVer[0], byVer[1], byVer[2] );
//»õ·Î¿î ¹öÀüÀÌ ÇöÀç ·ÎÄÃÀÇ ¹öÀüº¸´Ù Å©´Ù¸é.. ¾÷µ¥ÀÌÆ®ÇÒ Æú´õÀÇ °³¼ö¸¦ Áõ°¡½ÃŲ´Ù.
if (m_strtUpdateFolderInfo[m_uUpdateFolderCount].m_uTotalVersion > m_uLocalTotalVersion)
m_uUpdateFolderCount++;
if( m_uUpdateFolderCount > MAX_FOLDERINFO-1 )
return FALSE;
}
}
}
__finally
{
if (SMDFile)
fclose(SMDFile);
CHAR szVERFILE_NAME [MAX_PATH], szVERFILE_EXE [MAX_PATH], szVERFILE_FULLNAME [MAX_PATH];
_splitpath (lpszFilePath, NULL, NULL, szVERFILE_NAME, szVERFILE_EXE);
wsprintf(szVERFILE_FULLNAME, "%s%s", szVERFILE_NAME, szVERFILE_EXE);
DeleteFile (szVERFILE_FULLNAME);
}
return TRUE;
}
// ÀÌ ÇÔ¼ö´Â ¼¹öÀÇ ¹öÀüÆÄÀÏÀ» ´Ù¿î ¹Þ¾Æ¼, ÇöÀç Ŭ¶óÀ̾ðÆ®ÀÇ ¹öÀü°ú ºñ±³ÇÏ¿©,
// ¾÷µ¥ÀÌÆ®¸¦ ÇÒÁö ¾È ÇÒÁö¸¦ °áÁ¤ÇÏ´Â ÇÔ¼ö´Ù.
// ¹öÀüüũ ½ÇÆÐ¸é, RESULT_FAIL
// ¾÷µ¥ÀÌÆ® ÆÄÀÏÀÌ ¾øÀ¸¸é, RESULT_NOMORE_UPDATE_FILES
// ¼º°øÀ̸é, RESULT_SUCCESS
WZ_DECLAREDLL eRESULT_CONSTANT CWZUpdateModule::CheckUpdateFiles()
{
// 1 . ¼¹ö¿¡ ÀÖ´Â ¹öÀü ÆÄÀÏÀ» ´Ù¿î ¹Þ´Â´Ù.
// ÇöÀç ´Ù¿î¹ÞÀ»·Á´Â ¼¹öÀÇ Æú´õ¿¡ ÀÖ´Â ¹öÀü ÆÄÀÏÀ» ´Ù¿î ¹Þ´Â´Ù. ¹ÞÀº ÆÄÀÏÀº ·ÎÄÿ¡ ´Ù¿î¹Þ´Â´Ù.
TCHAR szVerFilePath[MAX_PATH];
GetVersionFilePath( szVerFilePath, MAX_PATH );
if ( !DownloadFile( szVerFilePath ) )
return RESULT_FAIL;
// 2 . ¹ÞÀº ¹öÀü ÆÄÀÏ¿¡¼ ÇöÀç Ŭ¶óÀ̾ðÆ®ÀÇ ¹öÀü°ú ºñ±³ÇÏ¿© ¹ÞÀ» ÆÄÀÏÀÌ ÀÖÀ¸¸é ÇØ´ç Æú´õ¿¡¼ ¸ñ·ÏÆÄÀÏÀ» ¹Þ´Â´Ù.
if ( !CheckVersion(m_szVersionFileName) )
{
MessageBox (HWND_DESKTOP, "checking version file error", "error", MB_OK | MB_ICONERROR);
return RESULT_FAIL;
}
if (m_uUpdateFolderCount == 0) //¾÷µ¥ÀÌÆ® ÇÒ ÆÄÀÏÀÌ ¾ø´Ù.
return RESULT_NOMORE_UPDATE_FILES;
return RESULT_SUCCESS;
}
// lpszFilePath´Â ¸®½ºÆ® ÆÄÀÏÀÇ À̸§ÀÌ´Ù. ±âº»ÀûÀ¸·Î wz_filelist.dat ÀÌ´Ù.
WZ_DECLAREDLL BOOL CWZUpdateModule::UpdateRun()
{
CHAR szCurrentLocalDirectory [MAX_PATH]; // ÇöÀç ·ÎÄà ȣ½ºÆ®ÀÇ µð·ºÅ丮 °æ·Î
CHAR szCurrentLocalFilePath [MAX_PATH]={0,}; // ·ÎÄà ȣ½ºÆ®ÀÇ µð·ºÅ丮 °æ·Î
CHAR szErrorMsg[256] = {0,}; // ¿¡·¯ ¸Þ½ÃÁö Ãâ·Â¿ë
m_strtUpdatingFileInfo.Reset();
// ÇöÀç ½ÇÇàÆÄÀÏÀÇ µð·ºÅ丮¸¦ ±¸ÇÑ´Ù.
GetModuleDirectory( szCurrentLocalDirectory, MAX_PATH );
// ¾÷µ¥ÀÌÆ® Àü¿¡ ÇöÀçÀÇ ·ÎÄà ¹öÀüÀ» ¾Ë¸°´Ù.
LoadLocalVerInfo();
m_strtUpdatingFileInfo.btVer1 = m_btLocalVer1;
m_strtUpdatingFileInfo.btVer2 = m_btLocalVer2;
m_strtUpdatingFileInfo.btVer3 = m_btLocalVer3;
AddEvent( EVNET_VERSION_ALARM );
for (UINT i = 0 ; i < m_uUpdateFolderCount ; i++ )
{
//ÆÄÀϸ®½ºÆ® ÆÄÀÏÀÇ °æ·Î¸¦ ¾ò¾î¿Â´Ù.
CHAR szFileListFilePath[MAX_PATH];
GetFileListFilePath( szFileListFilePath, MAX_PATH, m_strtUpdateFolderInfo[i].m_szFolderName );
//¸®½ºÆ® ÆÄÀÏ ´Ù¿î·Îµå, ´Ù¿î¹ÞÀ» À§Ä¡¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ½ÇÇàÆÄÀÏÀÌ ÀÖ´Â °÷¿¡ ´Ù¿î·Îµå ÇÑ´Ù.
if ( !DownloadFile(szFileListFilePath) )
return FALSE;
char szVerFolerPath[MAX_PATH];
GetVersionFolderPath( szVerFolerPath, MAX_PATH, m_strtUpdateFolderInfo[i].m_szFolderName );
__try
{
BOOL bRet = DownloadFilesOnFileList( szVerFolerPath );
if( bRet == FALSE)
return FALSE; //Çϳª¸¸ Àß ¸øµÇµµ, ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù.
// ¿©±â±îÁö ¿ÔÀ¸¸é À ¹öÀüÀ¸·ÎÀÇ ¾÷µ¥ÀÌÆ®°¡ ¼º°øÇÑ °ÍÀ̹ǷΠ¾÷µÈ ¹öÀü ÀúÀå
m_btLocalVer1 = m_strtUpdateFolderInfo[i].m_btVer1;
m_btLocalVer2 = m_strtUpdateFolderInfo[i].m_btVer2;
m_btLocalVer3 = m_strtUpdateFolderInfo[i].m_btVer3;
SaveLocalVerInfo();
// ¾÷µ¥ÀÌÆ® Áß ÇÁ·Î±×·¥ ¹öÀüÀ» ¾Ë¸°´Ù.
m_strtUpdatingFileInfo.btVer1 = m_btLocalVer1;
m_strtUpdatingFileInfo.btVer2 = m_btLocalVer2;
m_strtUpdatingFileInfo.btVer3 = m_btLocalVer3;
AddEvent( EVNET_VERSION_ALARM );
//////////////////////////////////////////////////////////////////////////
}
__finally
{
if (SMDFile)
fclose(SMDFile);
DeleteFile( DEFAULT_FILELIST_FILE );
DeleteFile( m_szVersionFileName );
m_iCurrentState = STATE_CONNECTED;
}
}
return TRUE;
}
WZ_DECLAREDLL BOOL CWZUpdateModule::AddEvent(int nEvent)
{
// ÇöÀç »óŰ¡ DISCONNECTED»óÅÂÀ̸é ÄݹéÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù.
BOOL bRet = FALSE;
if ( m_lpFN_EventCallbackProc != NULL && m_bUseEventProc != FALSE )
{
m_lpFN_EventCallbackProc( nEvent, (LPVOID) this, m_strtUpdatingFileInfo);
bRet = TRUE;
}
return bRet;
}
WZ_DECLAREDLL BOOL CWZUpdateModule::UpdateStop()
{
//¾÷µ¥ÀÌÆ® ÁßÀ̶ó´Â°Ç ÇöÀç ´Ù¿î·Îµå ¾²·¹µå°¡ µ¹°í ÀÖ´Ù´Â ¶æÀÌ´Ù.
m_bCancelUpdate = TRUE;
m_bUseEventProc = FALSE;
WaitForSingleObject( m_hUpdateThread, 1000 );
m_bUseEventProc = TRUE;
AddEvent( EVENT_FILEDOWNLOAD_STOP );
return TRUE;
}
WZ_DECLAREDLL BOOL CWZUpdateModule::SetEventCallBackProc (LPFUNC_RECEIVEEVENT lpFN_EventCallbackFunc )
{
if( lpFN_EventCallbackFunc == NULL)
return FALSE;
m_lpFN_EventCallbackProc = lpFN_EventCallbackFunc;
return TRUE;
}
WZ_DECLAREDLL void CWZUpdateModule::SetUseEventProc ( BOOL bUse )
{
m_bUseEventProc = bUse;
}
// 01.02.03 °ú °°Àº ¹®ÀÚ¿¿¡¼ °¢°¢ÀÇ ¹öÀüÀ» »Ì¾Æ³»´Â ÇÔ¼ö.
WZ_DECLAREDLL void CWZUpdateModule::GetVersionFromString( char* pszVersion, byte& byVer1, byte& byVer2, byte& byVer3 )
{
// char* szTok;
string strVersion = pszVersion;
int nCnt = 0;
byte byVersion[3];
while( strVersion.size() != 0)
{
int nIdx = strVersion.find('.');
if( nIdx == string::npos )
{
if( !strVersion.empty() )
{
byVersion[nCnt] = atoi( strVersion.c_str() );
}
strVersion.clear();
}
else
{
string strVer = strVersion.substr( 0, nIdx );
byVersion[nCnt] = atoi( strVer.c_str() );
strVersion.erase( 0, nIdx + 1);
nCnt++;
}
}
//¸®Åϰª ´ëÀÔ.
byVer1= byVersion[0];
byVer2= byVersion[1];
byVer3= byVersion[2];
}
//°¢ ¹öÀüÀÇ À¯ÀÏÇÑ °ªÀ» °°±âÀ§ÇÑ ÅäÅ» ¹öÀü °è»ê..
WZ_DECLAREDLL unsigned int CWZUpdateModule::GetTotalVersion( const byte byVer1, const byte byVer2, const byte byVer3 )
{
return (byVer1*65536)+(byVer2*256)+byVer3;
}
//ÀÌ ÇÔ¼ö´Â AutoUpdater¿¡¼ È£ÃâµÈ´Ù.
//StartUpdate
//¹öÀüÆÄÀÏÀ» ´Ù¿î¹Þ¾Æ ¹öÀüÀ» Ã¼Å©ÇØ¼ ¾÷µ¥ÀÌÆ® ÇÒ ¹öÀüÀÌ ÀÖÀ¸¸é,
//¾÷µ¥ÀÌÆ® thread¸¦ µ¹·Á¼, ÆÄÀÏÀ» ´Ù¿î·Îµå ÇÑ´Ù.
WZ_DECLAREDLL BOOL CWZUpdateModule::StartUpdate()
{
// ÇöÀç »ì¾Æ Àִ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î¼¼¼°¡ ÀÖ´ÂÁö ¾ø´ÂÁö üũÇÑ´Ù.
BOOL bRet = CheckLiveProcess();
if(bRet == TRUE) //ÇÁ·Î¼¼¼°¡ »ì¾Æ ÀÖÀ¸¸é..
{
AddEvent( EVENT_LIVE_PROCESS );
return FALSE;
}
// ¹öÀüüũ¸¦ ÇÑ´Ù.
eRESULT_CONSTANT eRC = CheckUpdateFiles();
if ( eRC == RESULT_FAIL )
return FALSE;
else if( eRC == RESULT_NOMORE_UPDATE_FILES )
{
// ´õ ÀÌ»ó ¾øµ¥ÀÌÆ® ÇÒ ¼ö ¾øÀ¸¸é, ÇöÀç ¹öÀüÁ¤º¸´Â 0 ¹ø ¹è¿¿¡ ÀÖ´Ù..
m_strtUpdatingFileInfo.btVer1 = m_strtUpdateFolderInfo[0].m_btVer1;
m_strtUpdatingFileInfo.btVer2 = m_strtUpdateFolderInfo[0].m_btVer2;
m_strtUpdatingFileInfo.btVer3 = m_strtUpdateFolderInfo[0].m_btVer3;
AddEvent( EVENT_NOMORE_UPDATEFILE );
return FALSE;
}
m_iCurrentState = STATE_FILE_DOWNLOADING;
//Update Thread °¡µ¿
m_nUpdateThreadID = 1;
m_hUpdateThread = (HANDLE) _beginthreadex (NULL, NULL, UpdateWorkerThread, (LPVOID) this, 0, &m_nUpdateThreadID);
if (m_hUpdateThread == INVALID_HANDLE_VALUE)
{
if (m_lpFN_EventCallbackProc)
{
SetLastErrorMsg(CWZUpdateModule::ERROR_SYSTEM, GetLastError());
return FALSE;
}
}
return TRUE; // ¸¸ÀÏ FALSE¶ó¸é ¾÷µ¥ÀÌÆ® ÇÁ·Î¼¼½º Á¾·á
}
//±âº»ÀûÀ¸·Î Á¤ÀÇ µÇ¾î ÀÖ´Â ±âº»°ªÀ» ¼³Á¤ÇÑ´Ù.
WZ_DECLAREDLL void CWZUpdateModule::SetDefaultData(void)
{
if( IsUpdateInfoLoad() )
strcpy (m_szVersionFileName, m_info.m_szFTP_VersionFileName );
else
strcpy (m_szVersionFileName, DEFAULT_VERSION_FILE);
}
WZ_DECLAREDLL void CWZUpdateModule::SetVersionFile(const char* pszFile)
{
strcpy(m_szVersionFileName, pszFile);
}
WZ_DECLAREDLL void CWZUpdateModule::SetDownloadDirectory(const char* pszDirectory)
{
if(pszDirectory == NULL || (strcmp(pszDirectory, "") == 0) )
m_strDownDirectory = "";
else
m_strDownDirectory = pszDirectory;
}
WZ_DECLAREDLL const string CWZUpdateModule::GetDownloadDirectory()
{
return m_strDownDirectory;
}
//·ÎÄÃÀÇ ´Ù¿î·Îµå Àý´ë °æ·Î¸¦ ¾ò´Â´Ù.
WZ_DECLAREDLL void CWZUpdateModule::GetLocalDownAbsoluteDir(string strRelativeDir, string& strAbsolteDir)
{
if( strRelativeDir.length() == 0 )
strRelativeDir = "\\";
//¸¸ÀÏ m_strDownDirectory °¡ null ÀÌ µé¾î ÀÖÀ»¼ö ÀÖ´Ù.. µû¶ó¼ ±×¶§´Â..
//ÇöÀç ½ÇÇàÁßÀÎ µð·ºÅ丮·Î ¼³Á¤ÇÑ´Ù.
// ´Ù¿î·Îµå µð·ºÅ丮¿¡ strRelativeDir(»ó´ë°æ·Î)¸¦ µ¡ºÙ¿©¼ ÀúÀå½Ãų ÇöÀç ·ÎÄÃÀÇ Àý´ë°æ·Î¸¦ ¾ò´Â´Ù.
if(m_strDownDirectory.length() == 0)
{
char szDir[MAX_PATH];
GetModuleDirectory( szDir, MAX_PATH );
strAbsolteDir = szDir;
strAbsolteDir += strRelativeDir;
}
else
{
strAbsolteDir = m_strDownDirectory;
strAbsolteDir += "\\";
strAbsolteDir += m_info.m_szServerName[m_nServerNumber];
strAbsolteDir += strRelativeDir;
}
}
//ÇöÀç ÄÄÇ»ÅÍ¿¡ ¾÷µ¥ÀÌÆ®Çϰí ÀÖ´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàÁßÀÎÁö üũ.
//½ÇÇàÁßÀÎ ÇÁ·Î±×·¥ÀÌ Çϳª¶óµµ ÀÖÀ¸¸é TRUE¸®ÅÏ
//¾Æ´Ï¸é FASLE¸¦ ¸®ÅÏ..
WZ_DECLAREDLL BOOL CWZUpdateModule::CheckLiveProcess()
{
//ÇÁ·Î¼¼¼ÀÇ MAX°ªÀº 0-9±îÁö 10°³ÀÌ´Ù.
for(int i = 0; i < MAX_LIVE_PROCESS; i++)
{
// ÇÁ·Î¼¼½º üũ ·±Ãijª °ÔÀÓ Å¬¶óÀÌ¾ðÆ®°¡ ½ÇÇàÁßÀÎÁö üũÇÑ´Ù
HANDLE hSnapShot;
//Get the snapshot of the system
hSnapShot = CreateToolhelp32Snapshot (TH32CS_SNAPALL, NULL);
PROCESSENTRY32 pEntry;
pEntry.dwSize = sizeof(pEntry);
//Get first process
Process32First (hSnapShot,&pEntry);
//Iterate thru all processes
DWORD dwPID = GetCurrentProcessId();
while(TRUE)
{
BOOL hRes = Process32Next (hSnapShot,&pEntry);
if(hRes == FALSE)
break;
if(dwPID == pEntry.th32ProcessID)
continue;
// ½ÇÇà ÁßÀÎÁö üũÇϵµ·Ï ÇÑ´Ù.
if( strcmp(pEntry.szExeFile, m_info.m_szProcess[i] ) == 0 ) //ÇöÀç °°Àº ÇÁ·Î±×·¥ÀÌ ½ÇÇàÁßÀ̶ó¸é..
{
return TRUE;
}
}// End While
}// End For
return FALSE;
}
WZ_DECLAREDLL void CWZUpdateModule::GetModuleDirectory( char* szDirPath, int nSize )
{
ZeroMemory( szDirPath, nSize );
char szPath[128];
char szDrive[40], szDir[256];
GetModuleFileName( NULL, szPath, 128);
_splitpath( szPath, szDrive, szDir, NULL, NULL );
sprintf( szDirPath, "%s%s", szDrive, szDir);
}
WZ_DECLAREDLL BOOL CWZUpdateModule::Init( )
{
//·Î±×µ¥ÀÌÅÍ ÃʱâÈ.
char szDir[MAX_PATH];
GetModuleDirectory( szDir, MAX_PATH );
BOOL bRet = m_info.LoadData();
if( bRet == TRUE)
{
m_bLoadUpdateInfo = TRUE;
strncpy( m_szIPADDR, m_info.m_szFTP_IP, MAX_PATH );
m_wPORT = m_info.m_nFTP_Port;
SetDefaultDirectory( m_info.m_szServerName[m_nServerNumber] );
}
else
{
m_bLoadUpdateInfo = FALSE;
ZeroMemory( m_szIPADDR, MAX_PATH );
strncpy( m_szIPADDR, "127.0.0.1", MAX_PATH );
m_wPORT = DEFAULT_FTP_PORT;
}
if( !LoadLocalVerInfo() )
return FALSE;
SetDefaultData();
return TRUE;
}
WZ_DECLAREDLL void CWZUpdateModule::SetDefaultDirectory( char* pszDir )
{
if( !pszDir ) return;
strncpy( m_szDefaultDirectory, pszDir, MAX_PATH );
}
//±âº» µð·ºÅ丮 °æ·Î¸¦ Æ÷ÇÔÇÏ´Â FTP¼¹ö»óÀÇ ¹öÀüÆÄÀÏ °æ·Î¸¦ ±¸ÇÑ´Ù.
WZ_DECLAREDLL void CWZUpdateModule::GetVersionFilePath( TCHAR* pszVerFilePath, int nSize )
{
if( m_szDefaultDirectory == NULL || (strcmp( m_szDefaultDirectory, "" ) == 0 ) )
strncpy( pszVerFilePath, m_szVersionFileName, nSize ); //¸¸ÀÏ µðÆúÆ® µð·ºÅ丮°¡ ¾øÀ¸¸é ·çÆ®¿¡¼ ã´Â´Ù.
else
_snprintf( pszVerFilePath, nSize, "%s\\%s", m_szDefaultDirectory, m_szVersionFileName );
}
//ÆÄÀϸ®½ºÆ® ÆÄÀÏÀº ¹Ýµå½Ã ´Ù¿î·Îµå ¹Þ´Â ¹öÀüÆú´õ¿¡ Á¸ÀçÇØ¾ß ÇÑ´Ù.
//¿¹ : AgentServer\00.00.01\filelist.dat
WZ_DECLAREDLL void CWZUpdateModule::GetFileListFilePath( char* pszFilePath, int nSize, const char* pszVerFolder )
{
if( m_szDefaultDirectory == NULL || (strcmp( m_szDefaultDirectory, "" ) == 0 ) )
_snprintf( pszFilePath, nSize, "%s\\%s", pszVerFolder, DEFAULT_FILELIST_FILE );
else
_snprintf( pszFilePath, nSize, "%s\\%s\\%s", m_szDefaultDirectory, pszVerFolder, DEFAULT_FILELIST_FILE );
}
//¹öÀüÆú´õÀÇ °æ·Î¸¦ ¹ÝȯÇÑ´Ù.
WZ_DECLAREDLL void CWZUpdateModule::GetVersionFolderPath( char* pszFileName, int nSize, const char* pszVerFolder )
{
if( m_szDefaultDirectory == NULL || (strcmp( m_szDefaultDirectory, "" ) == 0 ) )
strncpy( pszFileName, pszVerFolder, nSize );
else
_snprintf( pszFileName, nSize, "%s\\%s", m_szDefaultDirectory, pszVerFolder );
}
WZ_DECLAREDLL void CWZUpdateModule::GetServerName( char* pszServerName, int nSize )
{
_snprintf( pszServerName, nSize, "%s", m_info.m_szServerName[m_nServerNumber] );
}