基于 Web 的程序版本检查
2006-07-21 11:09:14 来源:WEB开发网MFC 程序员可能会问,MFC 都已经具备了 WinInet 封装类,为什么不用现成的东东,而要自己再做一个 CInternetHandle,原因很简单:为了使用区区几行代码而加载整个 MFC 是非常浪费资源的。谁都知道,代码越少越好。再者,不让 CWebVersion 依赖于 MFC 是明智之举。非 MFC 应用也能使用 CWebVersion 岂不是更好!不用担心用户是否加载了最新的DLLs。开发基于Web的应用尤其如此。
图二 更新程序版本的对话框
为了进一步示范 CWebVersion 的使用,我写了一个对话框程序,如图二所示,每次启动程序时,都会对版本进行检查,读取新版本数据是在 InitInstance()函数中进行的: // 从 Web 读取当前版本号
将读取的版本号存储在 m_dwNewVersion 数据成员中,这里例子程序使用在32位的版本号。接着在对话框的 OnInitDialog() 例程中对版本号进行比较,当前的版本号存储在程序的 VS_VERSION_INFO 资源中,这个信息在编译程序时就已经产生了,获取它很容易,参见另外一个C++类:CMyVersionInfo。通过比较:
if (CWebVersion::Online()) {
CWebVersion ver(_T("pub.chinafsdu.net"));
if (ver.ReadVersion(_T("version.txt"),_T("pub"),_T("pub")))
m_dwNewVersion = ver.dwVersionMS;
}// 比较当前的程序版本与最新的程序版本
如果Web版本较新,则对话框显示一个“更新版本 XXX”链接(如图二所示),否则隐藏链接,什么也不显示。在程序启动时用FTP读取10个字节的文件应该是很快的,但实际情况往往与想象的并不一样,对话框的显示总是会有一个延时,延时的长短要看FTP服务器的位置以及繁忙状态。因此,要想用户界面的响应速度够快,可以考虑在单独的线程进行文件的下载。
if (App.m_dwNewVersion && vi.dwProductVersionMS < App.m_dwNewVersion) {
// current version is newer: display link
s.Format(_T("更新版本 %d.%02d"),
HIWORD(App.m_dwNewVersion),LOWORD(App.m_dwNewVersion));
m_wndVerChkLink.SetWindowText(s);
} else {
// current version not available: hide link
m_wndVerChkLink.ShowWindow(SW_HIDE);
}
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››web安全之信息刺探防范1
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››webqq 最新加密算法
- ››webdriver 数据库验证方法
- ››WebSphere Application Server 7.0 XML Feature P...
- ››Web2.0网络时代基于社会影响力的声望值
- ››Web服务器搭建:配置Linux+Apache+Mysql+PHP(或Pe...
- ››WebLogic调整Java虚拟机性能优化参数
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
更多精彩
赞助商链接