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;
CStringm_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();
}
分享到:
相关推荐
使用时需要吧升级程序的EXE和主程序EXE还有XML放在一个文件夹里面,XML文件需要修改你服务器存放的升级文件路径及程序名。 自己的主程序初始化里面添加这么一段: string str = System.Environment.Current...
自己用c#写的串口升级单片机代码程序,支持HEX文件处理
Qt自动升级程序,包括界面和数据处理,单独AutoUpdate.exe依赖于iautoupdate.dll
一个Delphi写的自动升级程序,连接类型为ftp,配置信息详见update.ini
自己写的服务器端升级,客户端自动下载的小程序,分两部分,升级和下载,用到了mssql数据库 delphi的
本程序是检查程序版本并提供HTTP方式在线更新的程序! 支持多个文件、不同目录更新。 windows环境通用。 使用: 1.把所有需要更新的文件名称和版本号信息添加到更新列表XML文件中,XML文件内容格式: <?xml ...
升级程序会自动运行,直到全部操作执行完毕。 <br>将服务器中的 upgrade25to4.php 删除! <br>如果您的服务器是类Unix系统主机,别忘了将forumdata目录以及下面所有的目录和文件属性设置为777(所有用户组可读写...
功能程序中,可以通过U盘,tcp,uart等手段,将升级程序写在,待升级区,并在特定位置写程序升级标志位; 如果需要升级程序,设备重启后,程序先运行IAP 引导程序,检测到升级标志位,如程序中所示,将升级区的程序...
本人写的针对WinForm程序自动升级程序,适用于所有WinForm客户端程序,非常方便,分享给大家共同学习。
结合贝壳物联写的一个8266在线升级OTA程序,第一次用烧录器下载后,以后可以用微信小程序控制升级
PB11.5写的 自动升级应用程序 的程序!用起来挺方便的!再也不用一台一台机子的更新程序了! 通过数据库升级,先建立数据表! 然后在任何一台客户端上上传应用程序的新版本,则所有客户端均可升级! 如有问题:请...
内容索引:VC/C++源码,网络相关,自动更新,在线升级 VC++写的软件在线升级(自动更新)程序示例,主程序是由VC++完成,为了使程序有进一步升级扩展的能力,程序附加了ASP/PHP/JSP三种语言配合的动态页面,而非HTML...
利用新浪云计算服务器提供的http服务,为自己写的c语言可执行文件提供自动升级服务。本程序精简最小化。 配置文件示例: ;FileShow [cfg] ;当前版本 Version = 1.0.3 ;升级文件总数量 Files = 1 ;文件1 [f1] ;...
升级文件 升级文件 升级文件 升级文件 升级文件
详细: ...1、 一块已经用下载器烧录FPGA程序的EPCS4与ARM连接,ARM读出EPCS4“所有扇区”数据保存到NandFlash中,然后拷贝到电脑备份。 2、 另一块待烧录的FPGA与ARM连接,将刚读出的数据烧写进去。
这是使用QT进行编写的一个串口软件,如果想学QT编程的可以下载参考,但这个主要是为了JN5169在线升级写的PC端软件。这软件不是说对任意的JN5169都可以在线升级,必须JN5169内部跑了对应的程序,说白了就是通过这个...
自己公司C#写的自动升级程序,可以隐藏后台自动升级。用xml作为判断是否有更新。
软件在线升级程序VC++实例源码。1) update文件夹下为服务器所用文件.2) MyUpdate为客户端所用文件源程序.VC++写的软件在线升级(自动更新)程序示例,主程序是由VC++完成,为了使程序有进一步升级扩展的能力。.rar
曾经有位网友和我讨论怎样编写一个通过服务器对客户机上的程序进行自我升级的问题,由于我的项目也涉及到自我升级,当时我把我的解决方案提了出来,那就是做一个类似于瑞星的升级程序。在这里我也发现了很多的网友对...