DragonNest/Client/DnLauncher/DnAutoUpdate/DnAutoUpdate.cpp

134 lines
6.3 KiB
C++
Raw Normal View History

2024-12-20 16:56:44 +08:00
<EFBFBD><EFBFBD>// DnAutoUpdate.cpp : <EFBFBD> <EFBFBD>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ٳ<EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD>X<EFBFBD>i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
//
#include "stdafx.h"
#include "DnAutoUpdate.h"
#include "DnAutoUpdateDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
extern CString g_strHttpPath;
extern CString g_strLocalPath;
extern vector<int> g_vecUpdateVersion;
// CDnAutoUpdateApp
BEGIN_MESSAGE_MAP(CDnAutoUpdateApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
int __cdecl DefautAllocHook( int, void *, size_t, int, long, const unsigned char *, int )
{
return 1;
}
int __cdecl MyAllocHook(
int nAllocType,
void * pvData,
size_t nSize,
int nBlockUse,
long lRequest,
const unsigned char * szFileName,
int nLine
)
{
if( nAllocType == _HOOK_ALLOC && nSize == 196 )
{
int a = 0;
}
return 1;
}
// CDnAutoUpdateApp <EFBFBD><EFBFBD>1<EFBFBD>
CDnAutoUpdateApp::CDnAutoUpdateApp()
{
// TODO: <EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>1<EFBFBD> T<EFBFBD>ܴ|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
// InitInstance<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ɔ<EFBFBD>\<EFBFBD> <EFBFBD>0<EFBFBD>T<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> 0<EFBFBD>X<EFBFBD>i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
// _CrtSetAllocHook( MyAllocHook );
// _CrtSetBreakAlloc(59925);
}
// <EFBFBD>|<EFBFBD>\<EFBFBD> CDnAutoUpdateApp <EFBFBD><EFBFBD>̅<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
CDnAutoUpdateApp theApp;
// CDnAutoUpdateApp <EFBFBD>0<EFBFBD>T<EFBFBD>
BOOL CDnAutoUpdateApp::InitInstance()
{
// <EFBFBD> <EFBFBD>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ȳ<EFBFBD>Ӥ¸<EFBFBD><EFBFBD> ComCtl32.dll <EFBFBD><EFBFBD><EFBFBD> 6 t<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> D<EFBFBD><EFBFBD>ȼ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>D<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>ij]<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Windows XP <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ܴ<EFBFBD><EFBFBD> InitCommonControlsEx()<EFBFBD> <EFBFBD>i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
// InitCommonControlsEx()|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> J<EFBFBD><<EFBFBD>t<EFBFBD> =<EFBFBD>D<EFBFBD> ̹<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD>ŵ<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// <EFBFBD> <EFBFBD>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>θ<EFBFBD>d<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>h<EFBFBD>X<EFBFBD>ij]<EFBFBD>
// t<EFBFBD> <EFBFBD>D<EFBFBD> $<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>$<EFBFBD>.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
// \<EFBFBD><EFBFBD> <EFBFBD>0<EFBFBD>T<EFBFBD>
// t<EFBFBD><EFBFBD><EFBFBD> 0<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> J<EFBFBD><EFBFBD><EFBFBD> \ͅ<EFBFBD> <EFBFBD>‰<EFBFBD> <EFBFBD>|<EFBFBD>X<EFBFBD> l<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>t<EFBFBD>$<EFBFBD>t<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD>Ŕ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>0<EFBFBD>T<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD>p<EFBFBD>t<EFBFBD>|<EFBFBD> i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
// t<EFBFBD><EFBFBD><EFBFBD> $<EFBFBD><EFBFBD>t<EFBFBD> ȥ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ɤ¸Ҭ<EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>$<EFBFBD>.
// TODO: t<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD>֬<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> p<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>@<EFBFBD>
// <EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><<EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD>t<EFBFBD>|<EFBFBD> i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
SetRegistryKey(_T("\<EFBFBD><EFBFBD><EFBFBD> <51> <04>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȹ<><C8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1C> <00><>1<EFBFBD><1C> <51> <04>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
CString strCmdLine = m_lpCmdLine;
int nIndex = strCmdLine.Find( '|' );
g_strHttpPath = strCmdLine.Left( nIndex );
strCmdLine.Delete( 0, nIndex + 1 );
nIndex = strCmdLine.Find( '|' );
g_strLocalPath = strCmdLine.Left( nIndex );
strCmdLine.Delete( 0, nIndex + 1 );
nIndex = strCmdLine.Find( '-' );
char szTemp[256] = { 0, };
WideCharToMultiByte( CP_ACP, 0, strCmdLine.Left( nIndex ).GetBuffer(), -1, szTemp, sizeof(szTemp), NULL, NULL );
int nStartVersion = atoi( szTemp );
strCmdLine.Delete( 0, nIndex + 1 );
WideCharToMultiByte( CP_ACP, 0, strCmdLine.GetBuffer(), -1, szTemp, sizeof(szTemp), NULL, NULL );
int nTargetVersion = atoi( szTemp );
if( g_strHttpPath.GetLength() == 0 || g_strLocalPath.GetLength() == 0 )
return FALSE;
if( nStartVersion == 0 || nTargetVersion == 0 || nStartVersion > nTargetVersion )
return FALSE;
for( int i=nStartVersion; i<=nTargetVersion; i++ )
g_vecUpdateVersion.push_back( i );
CDnAutoUpdateDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: <EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> [U<EFBFBD>x<EFBFBD>]D<EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>T<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD> L<EFBFBD> <EFBFBD>̬<EFBFBD>`<EFBFBD>
// T<EFBFBD>ܴ|<EFBFBD> 0<EFBFBD>X<EFBFBD>i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
}
else if (nResponse == IDCANCEL)
{
// TODO: <EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> [<EFBFBD>͌<EFBFBD>]|<EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>T<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD> L<EFBFBD> <EFBFBD>̬<EFBFBD>`<EFBFBD>
// T<EFBFBD>ܴ|<EFBFBD> 0<EFBFBD>X<EFBFBD>i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
}
// <EFBFBD>T<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><<EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD> <EFBFBD>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD>‘<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> J<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> ]<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ij]<EFBFBD> FALSE|<EFBFBD>
// <EFBFBD>X<EFBFBD>i<EFBFBD>Ȳ<EFBFBD><EFBFBD>.
return FALSE;
}