關於NET windows軟件實現自動更新本人今天寫了一個DEMO供大家參考
大家先看下效果圖
主要涉及到兩個方面
更新軟件主項目和DLL文件
升級包自身的更新
一個項目通常包括主項目和類庫項目主項目就是啟動項目以exe結尾類庫項目主要是DLL 簡單的說更新就是將軟件本地的主項目和類庫項目進行更新
可以采用將最新的軟件放到一個遠程服務器上然後每次啟動本地軟件時候檢查如果有更新就從服務器上下載最新的EXE文件和DLL文件
來替換本地的DLL文件和exe文件
實現思路在本地和服務器上各放一個XML文件裡面記錄了軟件版本號發布日期要更新的DLL等一些信息如果發現本地軟件的版本號和服務器上的不相等或者
本地軟件中的類庫項目的發布時間比服務上的晚就開始下載服務器上的文件替換掉本地的文件
XML格式如下
<?xml version= encoding=utf?>
<AutoUpdater>
<AppName>WinUpdate</AppName>
<ReleaseURL>;/ReleaseURL>
<ReleaseDate>// ::</ReleaseDate>
<ReleaseVersion></ReleaseVersion>
<MinVersion></MinVersion>
<UpdateDes>
添加打印菜單
增加DLL
增加關於模塊
</UpdateDes>
<ApplicationStart>WinUpdateexe</ApplicationStart>
<ShortcutIcon>ico</ShortcutIcon>
<Releases>
<File name=AboutFormdll date=// :: size= />
</Releases>
</AutoUpdater>
public static void DownloadFile(string localFolder string remoteFolder string fileName ProgressBar bar
Label lblSize)
{
string url = remoteFolder + / + fileName;
string path = localFolder+ fileName;
string dir = PathGetDirectoryName(path);
if (!DirectoryExists(dir))
DirectoryCreateDirectory(dir);
WebRequest req = WebRequestCreate(url);
WebResponse res = reqGetResponse();
if (resContentLength == )
return;
long fileLength = resContentLength;
string totalSize = FormatFileSizeDescription(barMaximum);
using (Stream srm = resGetResponseStream())
{
var srmReader = new StreamReader(srm);
var bufferbyte = new byte[fileLength];
int allByte = bufferbyteLength;
int startByte = ;
while (fileLength > )
{
int downByte = srmRead(bufferbyte startByte allByte);
if (downByte == )
{
break;
}
;
startByte += downByte;
allByte = downByte;
int progress = barValue + downByte;
progress = progress > barMaximum ? barMaximum : progress;
barValue = progress;
lblSizeText = stringFormat(已完成{}/{} FormatFileSizeDescription(progress) totalSize);
}
var fs = new FileStream(path FileModeOpenOrCreate FileAccessWrite);
fsWrite(bufferbyte bufferbyteLength);
srmClose();
srmReaderClose();
fsClose();
}
}
}
關於升級包自身的更新采用如下思路在服務器上放置一個TXT文件裡面存放著升級包的版本號每次本地軟件啟動的時候
讀取服務器上TXT文件的版本號和本地升級包的版本信息進行比較如果不同就從服務器上下載升級包
關於下載本項目都是使用WebClient進行完成的
自己可以采用如下方式進行測試
首先在你的IIS下面建立一個虛擬目錄 此目錄用來放置要更新的文件內容如下
ReleaseListxml和文件夾主要是實現軟件更新
ReleaseListxml存放了需要更新的內容文件夾存放了需要更新的類庫和文件
AutoUpdateexeUpdaterVersontxt這兩個文件實現的升級包自身進行更新
AutoUpdateexe是升級包UpdaterVersontxt存放的是升級包的版本號
將以上內容部署到IIS下面
From:http://tw.wingwit.com/Article/program/net/201311/13607.html