Files
Sun1602/Tools/UpdateModule/ApplicationUpdate.cpp
T
2022-10-26 12:25:11 +08:00

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;
}