1、MFC自动更新问题的解决方案:大多数关于自动更新的问题,首先是在url地址上放一个压缩包,本程序默认zip压缩,把压缩包从zip压缩包下载到本地,然后解压压缩包把解压后的文件拷贝到制定的目录,注意千万不要再压缩包里放更新的exe,因为压缩的exe不能更新本身。
2、核心代码:
//此部分为button部分实现代码,获取button上的文字,如果是Start Update,表示开始更新,启动线程;
//如果是Complete,表示更新完成,删除压缩文件和解压后的文件夹;
void CUpdateDlg::OnBnClickedMfcbuttonUp()
{
// TODO: Add your control notification handler code here
CString str;
if (GetDlgItemText(IDC_MFCBUTTON_UP, str))
{
if (str == "Start Update")
{
m_pThreadUpdate = AfxBeginThread(ThreadUpdate, &m_progressctrl, THREAD_PRIORITY_NORMAL, CREATE_SUSPENDED);
//m_progressctrl为进度条控件的变量
if (m_pThreadUpdate == NULL)
{
AfxMessageBox("Thread is fail!");
return;
}
m_pThreadUpdate->m_bAutoDelete = TRUE;//由系统处理线程
m_pThreadUpdate->ResumeThread();
SetTimer(1, 200, NULL);
}
else if (str == "Complete")
{
myDeleteDirectory("seer");
DeleteFile("seer.zip");
CDialog::EndDialog(0);
}
}
}
//定时器主要用于判断是否从网上下载完文件,如果完成把button的文字变为complete;
void CUpdateDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call