現在很多共享軟件都有"在線升級"功能,比如"Windows 優化大師","超級兔子",所謂在線升級就是一個版本檢測程序,通過他,用戶可以隨時檢查有沒有新版本程序,以便及時升級,下面我們就在自己的程序裡來實現這個功能:
在正式編程前,我要說的是:我不贊成某些共享軟件在每次啟動時候都檢測新版本,並彈出窗口提醒用戶,有時候這大大影響或者妨礙了用戶的操作和使用,我們要實現的功能是:讓用戶自己去檢查新版本!
編程思路是這樣的:首先我們在主頁某個地址放一個文件,然後在我們的程序裡來檢查它,以便獲得新版本信息!這裡版本信息文件我們用INI文件來操作!比如下列格式,
[Version]
Version=12
[URL]
URL=http://www.123.com/123.exe
其中的 Version是新版本號,12表示V1.2版,這個格式完全可以自己設置,URL是新版本程序下載地址
另外,要獲取INTETNET上的文件,我們一般有2種辦法,一是通過FTP下載,二是HTTP直接連接,如果你有國際域名空間,那麼就可以使用匿名FTP在程序裡獲取版本信息文件,但是對於使用免費主頁的朋友來說就麻煩了。因為服務器不是我們的,這就不太方便了。那麼采用HTTP方式獲取版本信息文件就很有必要了!要獲取網站上的某個文件並保存在本地,我們只需要一個API函數URLDownloadToFile()即可,當成功下載INI文件後我們就可以讀取這個文件並進行分析工作了!
具體實現過程:
打開VC,建立MFC程序,放置一個標簽IDC_VER ,用來輸出信息,另外安排2個按狃,分別是IDC_CHECK,IDC_DOWNLOAD
前者用來檢查是否有新版本,後者用來下載新版本程序!
首先我們添加一個成員變量char new_url[100] 來存放新版本程序的下載地址:
然後在IDC_CHECK 按鈕事件裡輸入以下代碼來檢查有無新版本:
SetDLgItemText(IDC_VER,"正在檢查,請等待。。。。。。");
int ret=URLDownloadToFile(NULL,"http://ip/vesion.ini","c:\version.ini",0,NULL);
if (ret==S_OK) //如果下載成功
{
// 讀取Version 段的數據,得到新版本好
int newversion=GetPrivateProfileInt("Version","Ver",10,"c:\version.ini");
if (newversion>10) //跟當前版本比較,10表示目前版本V1.0 ,根據具體版本自己設置
{
SetDLgItemText(IDC_VER,"有新版本了!");
// 得到新版本下載地址給變量new_url
GetPrivateProfileString("URL","URL",0,new_url,100,"c:\version.ini");
}
else
SetDLgItemText(IDC_VER,"抱歉。還沒有新版本!");
DeleteFile("c:\version.ini"); //用完後刪除
}
else
SetDLgItemText(IDC_VER,"網絡連接失敗!");
在IDC_DOWNLOAD 按鈕事件裡輸入以下代碼以便打開IE浏覽器下載新文件:
ShellExecute(this->m_hWnd,"open",new_url,NULL,"c:\",SW_SHOW);
現在我們編輯一個VERSION.INI文件,並放到主頁裡,然後就可以實現新版本檢查功能了!
本文只是講述一個編程思路,具體功能還要各位編程愛好者自己去完善,比如:如果你想讓程序自動升級版本,那麼你需要把這個版本檢查程序做成一個單獨的EXE文件,通過它來檢查新版本,並從服務器上下載新版本來覆蓋舊版本!這些功能,大家就根據自己的需要去實現吧!