base
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user