正文

让自己学会写的一个在线升级的程序 2006-04-03 20:55:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/11906.html

分享到:

void CUpdateDlg::OnButtonDoupdate()  {    // 读取升级文件  CFileStatus rStatus;  CString szIniData;  CString inFile;  CString tmp;    inFile=m_szPath+"\\update.ini";    CFile UpdateFile;  UpdateFile.Open( inFile, CFile::modeRead);  UpdateFile.GetStatus(inFile,rStatus);  UpdateFile.Read(szIniData.GetBuffer(rStatus.m_size),rStatus.m_size);  UpdateFile.Close();    CStringArray arType;  CStringArray arVersion;  for(int i=1;i<=27;i+=2){  AfxExtractSubString(tmp,szIniData,i,'\n');  tmp.TrimRight();  tmp.TrimRight();  arType.Add(tmp);  }  for(int j=2;j<=28;j+=2){  AfxExtractSubString(tmp,szIniData,j,'\n');  tmp.TrimRight();  tmp.TrimRight();  arVersion.Add(tmp);  }    GetDlgItem(IDC_BUTTON_DOUPDATE)->EnableWindow(FALSE);    CProgressCtrl* pBar = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_UPDATE);  pBar->SetPos(5);  m_szEditMessage = "\r\n取得网络升级地址\r\n"+ServerUrl;  UpdateData(FALSE);    CInternetSession mySession(NULL,0);  CHttpFile* myHttpFile=NULL;  BOOL bIsNewer = FALSE;  CString myData;  CString myUrl;  CString m_SiteRec;  myUrl = ServerUrl+"?pro=update";  myHttpFile=(CHttpFile*)mySession.OpenURL(myUrl);  while(myHttpFile->ReadString(myData)){m_SiteRec = myData;}  myHttpFile->Close();  mySession.Close();    if(m_SiteRec=="ok"){  pBar->SetPos(10);  m_szEditMessage = "\r\n已经连通......\r\n"+m_szEditMessage;  UpdateData(FALSE);    for(int k=0;k<14;k++){  CInternetSession mySession(NULL,0);  CHttpFile* myHttpFile=NULL;  m_SiteRec.Empty();  myUrl = ServerUrl+"?pro=update&module="+arType[k]+"&version="+arVersion[k];  myHttpFile=(CHttpFile*)mySession.OpenURL(myUrl);  while(myHttpFile->ReadString(myData)){m_SiteRec += myData;}  if(m_SiteRec != "ok"){  CString inFile;  inFile=m_szPath+"\\data\\"+arType[k];  CFile NetFile;  NetFile.Open( inFile, CFile::modeCreate | CFile::modeWrite);  NetFile.Write( m_SiteRec, m_SiteRec.GetLength());  NetFile.Close();  bIsNewer = TRUE;  }  pBar->SetPos((k+1)*(100-10)+10);  m_szEditMessage = "\r\n检查"+arType[k]+"文件... 成功!\r\n"+m_szEditMessage;  UpdateData(FALSE);  myHttpFile->Close();  mySession.Close();  }    if(bIsNewer){  ::MessageBox(NULL,"文件已经更新成功!",NULL,MB_ICONASTERISK);  }else{  ::MessageBox(NULL,"您的数据文件已经是最新版本了!",NULL,MB_ICONASTERISK);  }  }else{  ::MessageBox(NULL,"没有连接网络或者找不到升级服务器,请检查",NULL,MB_ICONASTERISK);  pBar->SetPos(100);  }    // 下面是完成了.  GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE);  GetDlgItem(IDOK)->ShowWindow(SW_SHOW);  GetDlgItem(IDOK)->SetFocus();  }

阅读(5142) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册