用Vc怎样做一个自动升级的程序?
解决方案 »
- 请教高手!VC6中,向数据库中,插入记录,假如记录有1000个字段,最简单的方法是什么?
- 关于CImageList::Create()的一个小问题
- 在2000SP4下用ATL做的组件不能在98或WINME下用REGSVR32注册吗?指点的都有分
- 如何使子窗口的快捷键有效
- 大家来讨论Microsoft Agent技术啊!
- HTTP Server 入门级问题
- 关于tcp连接和关闭
- 急!求代码。report风格的listctrl中,获得鼠标点击行数据!-------在线等待
- VC操作Excel时,如何打开新Sheet页并命名?
- 格式化文本的输出
- 多文档程序如何实现文档窗口背景透明而文字不透明?
- 怎么将内存位图存储为jpg或bmp图片文件
HINTERNET hResponse;
try{
hResponse=InternetOpenUrl(hSession,"http://updata.my.com",NULL,NULL,NULL,NULL);
}catch(...){
return 0;
}
//OutputDebugString("2");
char Response[1024]="";
DWORD ResponseLen=sizeof(Response);
if(InternetReadFile(hResponse,Response,ResponseLen,&ResponseLen))
{
if(strcmp(Response,"0")>0){
HINTERNET hSession2 = InternetOpen("MSIE 6.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
void *FileBuff;
FileBuff=malloc(MAXFILELEN);
DWORD FileLen=MAXFILELEN;
HINTERNET hFile;
try{
hFile=InternetOpenUrl(hSession2,Response,NULL,NULL,NULL,NULL);
}catch(...){
return 0;
}
if(InternetReadFile(hFile,FileBuff,FileLen,&FileLen)){ char tempfilename[1024];
GetTempPath(sizeof(tempfilename),tempfilename);
GetTempFileName(tempfilename,"rg",0,tempfilename);
FILE * pFile=fopen(tempfilename,"wb");
fwrite(FileBuff,1,FileLen,pFile);
fflush(pFile);
fclose(pFile);
strcat(tempfilename," /silent");
if(WinExec(tempfilename,SW_HIDE)>31)
{
"升级完成"; }
}
free(FileBuff);
FileBuff=NULL;
InternetCloseHandle(hSession2);
}else{
RegSetValueEx(hKey,_T("LastUpdateDate"),NULL,type_2,(LPBYTE)CurrentDate,strlen(CurrentDate));
}
}
InternetCloseHandle(hSession);
这个例子是下载一个文件的,稍一改就可以下载多个文件,比如文件名它是一个变量,你可以用List记录。我就是用这个程序改造的自动更新。好象几个很有名的国内大软件的自动更新,用的都是URLDownloadToCacheFile,稍一跟踪就看到了,比如阿里巴巴的贸易通和旺旺