// PatchMaker.cpp : ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ëÇÑ Å¬·¡½º µ¿ÀÛÀ» Á¤ÀÇÇÕ´Ï´Ù. // #include "stdafx.h" #include "PatchMaker.h" #include "PatchMakerSheet.h" #include "AutoPatchPage.h" #include "ManualPatchPage.h" #include "ChecksumPage.h" #include "SettingOptionPage.h" #include "SettingPatchInfo.h" #include "UtilityFunc.h" #include "PMSettingConstant.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CPatchMakerApp BEGIN_MESSAGE_MAP(CPatchMakerApp, CWinApp) ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() // CPatchMakerApp »ý¼º CPatchMakerApp::CPatchMakerApp() : m_bAutoPatchOperate(false) , m_bManualPatchOperate(false) , m_lpSettingPage(NULL) { // TODO: ¿©±â¿¡ »ý¼º Äڵ带 Ãß°¡ÇÕ´Ï´Ù. // InitInstance¿¡ ¸ðµç Áß¿äÇÑ ÃʱâÈ­ ÀÛ¾÷À» ¹èÄ¡ÇÕ´Ï´Ù. } // À¯ÀÏÇÑ CPatchMakerApp °³Ã¼ÀÔ´Ï´Ù. CPatchMakerApp theApp; // CPatchMakerApp ÃʱâÈ­ BOOL CPatchMakerApp::InitInstance() { // ÀÀ¿ë ÇÁ·Î±×·¥ ¸Å´ÏÆä½ºÆ®°¡ ComCtl32.dll ¹öÀü 6 ÀÌ»óÀ» »ç¿ëÇÏ¿© ºñÁÖ¾ó ½ºÅ¸ÀÏÀ» // »ç¿ëÇϵµ·Ï ÁöÁ¤ÇÏ´Â °æ¿ì, Windows XP »ó¿¡¼­ ¹Ýµå½Ã InitCommonControls()°¡ ÇÊ¿äÇÕ´Ï´Ù. // InitCommonControls()¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é âÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù. InitCommonControls(); CWinApp::InitInstance(); CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); // Ç¥ÁØ ÃʱâÈ­ // ÀÌµé ±â´ÉÀ» »ç¿ëÇÏÁö ¾Ê°í ÃÖÁ¾ ½ÇÇà ÆÄÀÏÀÇ Å©±â¸¦ ÁÙÀÌ·Á¸é // ¾Æ·¡¿¡¼­ ÇÊ¿ä ¾ø´Â ƯÁ¤ ÃʱâÈ­ ·çƾÀ» Á¦°ÅÇØ¾ß ÇÕ´Ï´Ù. // ÇØ´ç ¼³Á¤ÀÌ ÀúÀåµÈ ·¹Áö½ºÆ®¸® ۸¦ º¯°æÇϽʽÿÀ. // TODO: ÀÌ ¹®ÀÚ¿­À» ȸ»ç ¶Ç´Â Á¶Á÷ÀÇ À̸§°ú °°Àº // ÀûÀýÇÑ ³»¿ëÀ¸·Î ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù. SetRegistryKey(_T("Gamasoft PatchMaker")); PMConst::InitializeStrings(); CPMSetting& pmSetting = CPMDefaultSetting::GetInstance(); CString szFilePathName; PMUtil::GetCurrentFolderName(szFilePathName); szFilePathName.Append(CPMDefaultSetting::GetDefaultSettingName()); if (!pmSetting.LoadSetting(szFilePathName)) { MessageBox(NULL, _T("±âº» ¼³Á¤ ÆÄÀÏÀ» ¸¸µé°Å³ª Àоî¿Ã ¼ö ¾ø½À´Ï´Ù"), _T("¼³Á¤ ÆÄÀÏ ¿À·ù"), MB_OK | MB_ICONWARNING); } else { CSettingPatchInfo patchInfo; CPMSetting pmLocalSetting; bool bFailed = false; while (!bFailed) { if (IDOK == patchInfo.DoModal() && patchInfo.CheckPatchInfo()) { // ¼³Á¤ ÆÄÀÏÀÇ Àüü À̸§ °æ·Î¸¦ ¾Ë¾Æ³½´Ù. CString szSetupFileName; PMUtil::GetCurrentFolderName(szSetupFileName); szSetupFileName.Append(patchInfo.GetSetupFileName()); if (pmLocalSetting.LoadSetting(szSetupFileName)) { CString szMinver((LPCTSTR)IDS_MIN_VER); CString szMaxver((LPCTSTR)IDS_MAX_VER); CString szTitle; szTitle.Format("PatchMaker v%s.%s : %s : %u", szMaxver, szMinver, patchInfo.GetSetupName(), patchInfo.GetPatchVersion()); CPatchMakerSheet sheet(szTitle.GetString()); CAutoPatchPage autoPatchPage; CManualPatchPage manualPatchPage(pmLocalSetting, patchInfo.GetPatchVersion()); CChecksumPage checksumPage; CSettingOptionPage settingOptPage(pmLocalSetting, sheet); sheet.AddPage(&autoPatchPage); sheet.AddPage(&manualPatchPage); sheet.AddPage(&checksumPage); sheet.AddPage(&settingOptPage); // ÀÌ ÆäÀÌÁö´Â Á¦ÀÏ ¸¶Áö¸·À¸·Î.. m_pMainWnd = &sheet; m_lpSettingPage = &settingOptPage; sheet.DoModal(); } else { MessageBox(NULL, _T("¼Â¾÷ ÆÄÀÏÀ» ºÒ·¯¿À±â À§Çؼ­ ¿©´Â µ¥ ½ÇÆÐÇß½À´Ï´Ù"), _T("ÆÄÀÏ ¿­±â ¿À·ù"), MB_OK | MB_ICONEXCLAMATION); bFailed = true; } } else { bFailed = true; } } } // ´ëÈ­ »óÀÚ°¡ ´ÝÇûÀ¸¹Ç·Î ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸Þ½ÃÁö ÆßÇÁ¸¦ ½ÃÀÛÇÏÁö ¾Ê°í // ÀÀ¿ë ÇÁ·Î±×·¥À» ³¡³¾ ¼ö ÀÖµµ·Ï FALSE¸¦ ¹ÝȯÇÕ´Ï´Ù. CoUninitialize(); return FALSE; } void CPatchMakerApp::SetAutoPatchOperate(bool bOperate) { if (0 != m_lpSettingPage && (m_bAutoPatchOperate ^ bOperate)) { // µÎ »óŰ¡ ¼­·Î ¹Ý´ë »óÅÂÀÎ °æ¿ì¿¡¸¸(exclusive OR) ÀÛ¾÷À» ÇÑ´Ù. m_lpSettingPage->SendMessage( bOperate ? PMConst::AP_SETTING_DISABLE : PMConst::AP_SETTING_ENABLE, 0, 0); m_bAutoPatchOperate = bOperate; } } void CPatchMakerApp::SetManualPatchOperate(bool bOperate) { if (0 != m_lpSettingPage && (m_bManualPatchOperate ^ bOperate)) { // µÎ »óŰ¡ ¼­·Î ¹Ý´ë »óÅÂÀÎ °æ¿ì¿¡¸¸(exclusive OR) ÀÛ¾÷À» ÇÑ´Ù. m_lpSettingPage->SendMessage( bOperate ? PMConst::MP_SETTING_DISABLE : PMConst::MP_SETTING_ENABLE, 0, 0); m_bManualPatchOperate = bOperate; } } void CPatchMakerApp::AddTotalProgressLog(LPCTSTR szProgress) { if (0 != m_pMainWnd && 0 != szProgress && m_pMainWnd->IsKindOf(RUNTIME_CLASS(CPatchMakerSheet))) { CPatchMakerSheet* lpSheet = static_cast(m_pMainWnd); lpSheet->GetLogEdit().AddLine(szProgress); } }