// ConsoleUpdaterDlg.cpp : ±¸Çö ÆÄÀÏ // #include "stdafx.h" #include "ConsoleUpdater.h" #include "ConsoleUpdaterDlg.h" #include "DownCallBack.h" #include "../Common/RegUtil.h" #include "unzip.h" #ifdef _DEBUG #define new DEBUG_NEW #endif CString GetErrorMessage(DWORD dwError); // CConsoleUpdaterDlg ´ëÈ­ »óÀÚ CConsoleUpdaterDlg::CConsoleUpdaterDlg(CWnd* pParent /*=NULL*/) : CDialog(CConsoleUpdaterDlg::IDD, pParent) { m_iTerasferring = 0; m_bIsSelfUpdate = FALSE; } void CConsoleUpdaterDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_STC_TITLE, m_stcTitle); DDX_Control(pDX, IDC_PRG_TOTAL, m_prgTotal); DDX_Control(pDX, IDC_PRG_NOW, m_prgNow); } BEGIN_MESSAGE_MAP(CConsoleUpdaterDlg, CDialog) END_MESSAGE_MAP() // CConsoleUpdaterDlg ¸Þ½ÃÁö 󸮱â BOOL CConsoleUpdaterDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù. m_prgTotal.SetRange(0, 100); m_prgTotal.SetStep(1); m_prgTotal.SetPos(0); m_prgNow.SetRange(0, 100); m_prgNow.SetStep(1); m_prgNow.SetPos(0); ShowWindow(SW_SHOW); // AfxBeginThread(Transfer, this); Transfer(); return TRUE; // ÄÁÆ®·Ñ¿¡ ´ëÇÑ Æ÷Ä¿½º¸¦ ¼³Á¤ÇÏÁö ¾ÊÀ» °æ¿ì TRUE¸¦ ¹ÝȯÇÕ´Ï´Ù. } void CConsoleUpdaterDlg::SetFileList(CStringArray& saFile) { m_saFile.Copy(saFile); m_nTotalCount = (int)m_saFile.GetCount(); } UINT CConsoleUpdaterDlg::Transfer() { CString sTitle, // Àü¼Ûâ Á¦¸ñ srcFile, // Àü¼Û ¹ÞÀ» ÆÄÀϸí dstFile, // ÀúÀåÇÒ ÆÄÀϸí strTemp; for (m_iTerasferring = 0; m_iTerasferring < m_nTotalCount; m_iTerasferring++) { m_prgNow.SetPos(0); // Àü¼Û¹ÞÀ» ÆÄÀÏ¸í ¼³Á¤ srcFile = DOWN_URL; srcFile += "/" + m_saFile[m_iTerasferring].Mid(m_saFile[m_iTerasferring].ReverseFind('\\') + 1); srcFile = srcFile.Left(srcFile.ReverseFind('.')); srcFile += ".zip"; char szTemp[MAX_PATH]={0}; GetCurrentPath(szTemp); dstFile.Format("%s\\update\\%s",szTemp,srcFile.Mid(srcFile.ReverseFind('/') + 1)); sTitle.Format("(%d / %d) %s ´Ù¿î·Îµå Áß...", m_iTerasferring + 1, m_nTotalCount, srcFile.Mid(srcFile.ReverseFind('/') + 1)); m_stcTitle.SetWindowText(sTitle); CDownCallback dcb; dcb.m_pdlg = this; if (URLDownloadToFile(NULL, srcFile, dstFile, 0, (IBindStatusCallback*)&dcb) != S_OK) { if (AfxMessageBox("ÆÄÀÏ Àü¼Û Áß ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.\n°è¼Ó ÇϽðڽÀ´Ï±î?", MB_YESNO | MB_ICONQUESTION) != IDYES) { OnCancel(); PostMessage(WM_CLOSE); return -1; } } // Unzip HZIP hz = OpenZip(dstFile,0); ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index; strTemp.Format("%s\\update\\",szTemp); SetUnzipBaseDir(hz,strTemp); GetZipItem(hz,0,&ze); UnzipItem(hz,0,ze.name); srcFile.Format("%s\\%s",dstFile.Left(dstFile.ReverseFind('\\')),ze.name); dstFile.Format("%s\\%s",szTemp,ze.name); if(lstrcmpi(ze.name,_T("SP-Updater.exe")) == 0) m_bIsSelfUpdate = TRUE; else { if(CopyFile(srcFile,dstFile,FALSE)) { DeleteFile(srcFile); } } CloseZip(hz); // } OnOK(); return 0; }