89 lines
2.4 KiB
C++
89 lines
2.4 KiB
C++
#include ".\ApplicationUpdate.h"
|
|
#include <algorithm>
|
|
|
|
CApplicationUpdate::CApplicationUpdate(void)
|
|
{
|
|
SetUpdateType( UPDATE_TYPE_APPLICATION );
|
|
}
|
|
|
|
CApplicationUpdate::~CApplicationUpdate(void)
|
|
{
|
|
}
|
|
|
|
//중간에 종료되어야 할 상황이면, FALSE
|
|
//모든것이 완료 되었을 때는 TRUE를 리턴한다.
|
|
BOOL CApplicationUpdate::StartUpdate()
|
|
{
|
|
PROCESS_INFO_MAP_ITER iter;
|
|
|
|
BYTE byUpdateSeq = 0;
|
|
|
|
for( iter = m_mapProcessInfo.begin(); iter != m_mapProcessInfo.end(); ++iter )
|
|
{
|
|
PROCESS_INFO* pInfo = iter->second;
|
|
if( !pInfo ) continue;
|
|
|
|
pInfo->m_byUpdateSequence = byUpdateSeq;
|
|
byUpdateSeq++;
|
|
|
|
if( GetUpdateNumber() != 0 ) //지정된 서버만 업데이트 면..
|
|
{
|
|
//현재 패치하려는 업데이트 넘버와,
|
|
if( pInfo->m_byUpdateNumber != GetUpdateNumber() ) //해당 서버가 아니면 리턴한다.
|
|
{
|
|
if( byUpdateSeq == GetProcessInfoCount() ) //마지막인데도 찾지 못했으면..
|
|
{
|
|
AddMessage( WM_UPDATE_NOT_SUPPORT_UPDATE_NUMBER, (VOID*)GetUpdateNumber() );
|
|
return FALSE;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if( !CheckLiveProcess( pInfo->m_szCheckProcess ) )
|
|
{
|
|
AddMessage( WM_UPDATE_LIVE_PROCESS, pInfo );
|
|
return FALSE;
|
|
}
|
|
|
|
//1. 기본정보 세팅.
|
|
m_UpdateModule.SetUpdateNumber( pInfo->m_byUpdateNumber );
|
|
m_UpdateModule.SetCurVerInfo( pInfo->m_szProcessVer );
|
|
m_UpdateModule.SetProcessName( pInfo->m_szProcessName );
|
|
m_UpdateModule.SetUpdateSequence( pInfo->m_byUpdateSequence );
|
|
|
|
//1. 다운받을 프로세서의 로컬 디렉토리를 생성한다.
|
|
m_UpdateModule.CreateLocalProcessDownDir();
|
|
|
|
//2. 버전을 체크한다.
|
|
eRC_VERSION RcVersion = m_UpdateModule.CheckVersionFiles( m_UpdateModule.GetCurVersion() );
|
|
if( RcVersion == RC_VERSION_FILE_NOTEXIST || RcVersion == RC_VERSION_PARSING_FAIL )
|
|
{
|
|
AddMessage( WM_UPDATE_VERSION_CHECK_FAIL, pInfo );
|
|
return FALSE;
|
|
}
|
|
else if( RcVersion == RC_VERSION_LASTEST ) //최신버전이면. 넘어간다.
|
|
{
|
|
AddMessage( WM_UPDATE_LASTEST_VERSION, pInfo );
|
|
continue;
|
|
}
|
|
|
|
// 한개의 프로세서를 업데이트 한다.
|
|
if( m_UpdateModule.UpdateOneProcess() ) //필요정보, 프로세서이름과 최종버전
|
|
{
|
|
m_UpdateModule.GetCurVersion().GetStringVersion( pInfo->m_szProcessVer, MAX_PATH );
|
|
AddMessage( WM_UPDATE_END_SUCCESS, pInfo );
|
|
}
|
|
else
|
|
{
|
|
AddMessage( WM_UPDATE_END_FAIL, pInfo );
|
|
DeleteFile( DEFAULT_FILELIST_FILE ); //로컬에 다운받아 놨던 파일리스트를 삭제한다.
|
|
DeleteFile( DEFAULT_VERSION_FILE ); //로컬에 다운받아 놨던 버전파일을 삭제한다.
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|