This commit is contained in:
biosvos
2026-08-07 17:38:18 +09:00
commit 873193a243
9613 changed files with 2755992 additions and 0 deletions
@@ -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;
}