关于在线升级程序 我做一个客户端软件,是绿色软件,不许安装,只有一个很小的.exe文件,要自动升级,请问如何做?最好给点代码。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、先跟服务端的配置文件匹配版本号,如果低于最新版本开始升级。2、GetInternetFile(strUpdateUrl,strOutLocal); //strUpdateUrl:服务端新版本路径。 //strOutLocal:本地版本路径。int GetInternetFile(CString szUrl, CString szFileName){ DWORD dwFlags; InternetGetConnectedState(&dwFlags, 0); CHAR strAgent[64]; memset(strAgent,0,sizeof(strAgent)); sprintf(strAgent, "Agent%ld", timeGetTime()); HINTERNET hOpen; if(!(dwFlags & INTERNET_CONNECTION_PROXY)) hOpen = InternetOpenA(strAgent, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, NULL, NULL, 0); else hOpen = InternetOpenA(strAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if(!hOpen) { return -1; } DWORD dwSize; CHAR szHead[] = "Accept: */*\r\n\r\n"; VOID* szTemp[16384]; HINTERNET hConnect; CFile file; if ( !(hConnect = InternetOpenUrlA ( hOpen, szUrl, szHead, lstrlenA (szHead), INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0))) { InternetCloseHandle(hOpen); return -1; } if (file.Open(szFileName,CFile::modeWrite|CFile::modeCreate)==FALSE ) { return -1; } DWORD dwByteToRead = 0; DWORD dwSizeOfRq = 4; DWORD dwBytes = 0; if (!HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, (LPVOID)&dwByteToRead, &dwSizeOfRq, NULL)) { dwByteToRead = 0; } memset(szTemp,0,sizeof(szTemp)); do { if (!InternetReadFile (hConnect, szTemp, 16384, &dwSize)) { file.Close(); return -1; } if (dwSize==0) { break; } else { file.Write(szTemp,dwSize); } }while (TRUE); file.Close(); InternetCloseHandle(hConnect); InternetCloseHandle(hOpen); return 1;} www.vckbase.com里面有个这样的例子 这里有免费的.兄弟. www.aslike.net CStdioFile读的中文是乱码,怎么解决? 8位灰度图 转换成 24位图 where is the "debug windows" for 2005? 如何限制CComboBox中输入字符的长度? 郁闷,显示不出对话框,大虾帮忙。。。 怎么把bmp设成背景透明? 一个关于网络和图象的程序的问题,回答好,我可以给500分,绝对守信用!!! 有关radio button的问题? GDI+的bug问题。。。//第二次画的也是经过100,100的点,感觉不是同一个点呢? 请问如何得到“我的文档”文件夹路径 关于文本对齐的问题? 安装VC++6.0!
2、GetInternetFile(strUpdateUrl,strOutLocal); //strUpdateUrl:服务端新版本路径。
//strOutLocal:本地版本路径。int GetInternetFile(CString szUrl, CString szFileName)
{
DWORD dwFlags;
InternetGetConnectedState(&dwFlags, 0);
CHAR strAgent[64];
memset(strAgent,0,sizeof(strAgent));
sprintf(strAgent, "Agent%ld", timeGetTime());
HINTERNET hOpen;
if(!(dwFlags & INTERNET_CONNECTION_PROXY))
hOpen = InternetOpenA(strAgent, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, NULL, NULL, 0);
else
hOpen = InternetOpenA(strAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(!hOpen)
{
return -1;
}
DWORD dwSize;
CHAR szHead[] = "Accept: */*\r\n\r\n";
VOID* szTemp[16384];
HINTERNET hConnect;
CFile file;
if ( !(hConnect = InternetOpenUrlA ( hOpen, szUrl, szHead,
lstrlenA (szHead), INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0)))
{
InternetCloseHandle(hOpen);
return -1;
}
if (file.Open(szFileName,CFile::modeWrite|CFile::modeCreate)==FALSE )
{
return -1;
}
DWORD dwByteToRead = 0;
DWORD dwSizeOfRq = 4;
DWORD dwBytes = 0;
if (!HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,
(LPVOID)&dwByteToRead, &dwSizeOfRq, NULL))
{
dwByteToRead = 0;
}
memset(szTemp,0,sizeof(szTemp));
do
{
if (!InternetReadFile (hConnect, szTemp, 16384, &dwSize))
{
file.Close();
return -1;
}
if (dwSize==0)
{
break;
}
else
{
file.Write(szTemp,dwSize);
}
}while (TRUE);
file.Close();
InternetCloseHandle(hConnect);
InternetCloseHandle(hOpen); return 1;
}
www.aslike.net