1. 程式人生 > >.net winform軟體自動更新

.net winform軟體自動更新

   關於.NET windows軟體實現自動更新,本人今天寫了一個DEMO,供大家參考。

     大家先看下效果圖:

       

    主要涉及到兩個方面

         1. 更新軟體主專案和DLL檔案

         2.升級包自身的更新

      1.   一個專案通常包括主專案和類庫專案,主專案就是啟動專案,以.exe結尾,類庫專案主要是DLL, 簡單的說更新就是將軟體本地的主專案和類庫專案進行更新。

可以採用將最新的軟體放到一個遠端伺服器上,然後每次啟動本地軟體時候,檢查如果有更新,就從伺服器上下載最新的.EXE檔案和DLL檔案,

來替換本地的DLL檔案和exe檔案

     實現思路:在本地和伺服器上各放一個XML檔案,裡面記錄了軟體版本號,釋出日期,要更新的DLL等一些資訊,如果發現本地軟體的版本號和伺服器上的不相等,或者

    本地軟體中的類庫專案的釋出時間比服務上的晚,就開始下載伺服器上的檔案,替換掉本地的檔案。

     XML格式如下

<?xml version="1.0" encoding="utf-8"?>
<AutoUpdater>
  <AppName>WinUpdate</AppName>
  <ReleaseURL>http://127.0.0.1/webdown/</ReleaseURL>
  <ReleaseDate>2012/3/1 10:42:34</ReleaseDate>
  <ReleaseVersion>1.0.1.99</ReleaseVersion>
  <MinVersion>1.0.1.88</MinVersion>
  <UpdateDes>
    1、	新增列印選單
    2、	增加DLL
    3、增加關於模組
  </UpdateDes>
  <ApplicationStart>WinUpdate.exe</ApplicationStart>
  <ShortcutIcon>ico</ShortcutIcon>
  <Releases>
    <File name="AboutForm.dll" date="2012/2/21 10:07:31" size="39" />
  </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 = Path.GetDirectoryName(path);
            if (!Directory.Exists(dir))
                Directory.CreateDirectory(dir);

            WebRequest req = WebRequest.Create(url);
            WebResponse res = req.GetResponse();
            if (res.ContentLength == 0)
                return;

            long fileLength = res.ContentLength;
            string totalSize = FormatFileSizeDescription(bar.Maximum);
            using (Stream srm = res.GetResponseStream())
            {
                var srmReader = new StreamReader(srm);
                var bufferbyte = new byte[fileLength];
                int allByte = bufferbyte.Length;
                int startByte = 0;
                while (fileLength > 0)
                {
                    int downByte = srm.Read(bufferbyte, startByte, allByte);
                    if (downByte == 0)
                    {
                        break;
                    }
                    ;
                    startByte += downByte;
                    allByte -= downByte;
                    int progress = bar.Value + downByte;
                    progress = progress > bar.Maximum ? bar.Maximum : progress;
                    bar.Value = progress;

                    lblSize.Text = string.Format("已完成{0}/{1}", FormatFileSizeDescription(progress), totalSize);
       
                }

                var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
                fs.Write(bufferbyte, 0, bufferbyte.Length);
                srm.Close();
                srmReader.Close();
                fs.Close();
            }
        }
    }

   2.關於升級包自身的更新,採用如下思路,在伺服器上放置一個TXT檔案,裡面存放著升級包的版本號,每次本地軟體啟動的時候,

 讀取伺服器上TXT檔案的版本號和本地升級包的版本資訊進行比較,如果不同,就從伺服器上下載升級包。

    關於下載本專案都是使用WebClient進行完成的。

     自己可以採用如下方式進行測試

    首先,在你的IIS下面建立一個虛擬目錄: ,此目錄用來放置要更新的檔案,內容如下

      

      1.ReleaseList.xml和1.0.4.98資料夾主要是實現軟體更新

          ReleaseList.xml存放了需要更新的內容。1.0.4.98資料夾存放了需要更新的類庫和檔案

     2.  AutoUpdate.exe,UpdaterVerson.txt這兩個檔案實現的升級包自身進行更新.

          AutoUpdate.exe是升級包,UpdaterVerson.txt存放的是升級包的版本號

    將以上內容部署到IIS下面

    本程式碼使用VS2008進行開發,

     DEMO下載

相關推薦

.net winform軟體自動更新

   關於.NET windows軟體實現自動更新,本人今天寫了一個DEMO,供大家參考。      大家先看下效果圖:             主要涉及到兩個方面          1. 更新軟體主專案和DLL檔案          2.升級包自身的更新      

WinForm通用自動更新器AutoUpdater項目實戰

C# WinForm 自動升級 .NET ASP.NET 一、項目背景介紹最近單位開發一個項目,其中需要用到自動升級功能。因為自動升級是一個比較常用的功能,可能會在很多程序中用到,於是,我就想寫一個自動升級的組件,在應用程序中,只需要引用這個自動升級組件,並添加少量代碼,即可實現自動升級功

使用 advanced installer 為 winform自動更新

upd clas net ins 切換 sheet 新建 彈出框 服務器 原文:使用 advanced installer 為 winform 做自動更新 advanced i

C# winForm 軟體自動升級實現方式

對於C#winform開發者來說,軟體自動升級功能是一個很重要的功能。作者根據自身經驗,和大家分享一下軟體升級的實現方式。 注意:本文主要介紹通過WebService升級軟體。作者的另一篇通過FTP方式升級軟體的介紹可在作者的另一篇文中檢視https://jingyan.baidu.com/ar

利用coding.net的webhook自動更新程式碼

如何利用webhook自動更新程式碼網上已經有很多教程,這裡記錄一下一個小細節。 比如,我要更新的網站目錄所屬使用者是www,則必須在www使用者環境下生成ssh-key,然後新增到coding.

C++實現軟體自動更新功能

    按照http協議,傳送請求資料   char *request = "GET /version.txt HTTP/1.0\r\nHost:www.xxx.com\r\nConnection: Close\r\n\r\n";   GET這個是表示以什麼方式請求,HTTP中還有很多其他的請求方式,常

WinForm通用自動更新AutoUpdater專案實戰

目前我們做的上位機專案還是以Winform為主,在實際應用過程中,可能還會出現一些細節的修改。對於這種情況,如果上位機帶有自動更新功能,我們只需要將更新後的應用程式打包放在指定的路徑下,可以讓使用者自己來進行更新使用,會大大增加專案的便捷性。   01.自動更新整體思路 今天給大家介紹一下如何基於C

winform自動更新之AutoUpdater.NET

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/zhaobw831/article/details/82226291使用AutoUpdater.NET對winform程式進行自動更新介紹AutoUpdater.NET是一個.NET平臺下桌面應用程式的一個自動升

winform自動更新程序實現

覆蓋 win7 流程 win mar 現在 OS mes pre 一、問題背景   本地程序在實際項目使用過程中,因為可以操作電腦本地的一些信息,並且對於串口、OPC、並口等數據可以方便的進行收發,雖然現在軟件行業看著動不動都是互聯網啊啥的,大有Web服務就是高大上的感覺,

[C#.net]WinForm載入窗體完成後自動執行事件

activate window 顏色 加載完成 false bsp eat pan ble 一、以下是網絡上可搜索到的次序 當 Windows Form 應用程序啟動時,會以下列順序引發主要表單的啟動事件: System.Windows.Forms.Co

C# Winform下一個熱插拔的MIS/MRP/ERP框架14(自動更新

對於軟體來說,啟用自動更新是非常必要的。 根據軟體的應用場景,我們可以設計不同的更新模型。 目前,IMES框架執行在.Net framework 4.0下面,使用的Win系統版本在Win7,域內管控,平時業務調整也不是很頻繁。 所以,我的更新很粗放,就是刪除舊檔案,拷貝新檔案: 1、更新檔案放置在檔案

WinForm中使用Web Services 來實現 軟體 自動升級( Auto Update ) (C#)

winform程式相對web程式而言,功能更強大,程式設計更方便,但軟體更新卻相當麻煩,要到客戶端一臺一臺地升級,面對這個實際問題,在最近的一個小專案中,本人設計了一個通過軟體實現自動升級技術方案,彌補了這一缺陷,有較好的參考價值。 一、升級的好處。     

vs .net專案自動更新版本號

使用SVN的一個程式, 一般都會裝,無需再次下載和安裝了. 只需要在專案屬性-> 生成事件-> 後期生成事件命令 中加入 subwcrev.exe $(ProjectDir)Properties\ $(ProjectDir)Properties\AssemblyInfo.

Winform 打包 混淆 自動更新

路徑: 最終的解決方案是,ConfuserEx+Installshield+AutoUpdater.NET,ConfuserEx做程式碼混淆工作,Installshield可以解決登錄檔的問題,AutoUpdater.NET用起來太方便了! <?xml version="1.0" encoding=

WIN10系統自動更新一鍵禁止軟體

軟體介紹: Windows 10是美國微軟公司研發的跨平臺及裝置應用的作業系統。是微軟釋出的最後一個獨立Windows版本。 Windows 10共有7個發行版本,分別面向不同使用者和裝置。   截止至2018年10月3日,Windows 10正式版已更新

AgileEAS.NET SOA中介軟體平臺更新日誌 2015-04-28

一、前言      AgileEAS.NET SOA 中介軟體平臺是一款基於基於敏捷並行開發思想和Microsoft .Net構件(元件)開發技術而構建的一個快速開發應用平臺。用於幫助中小型軟體企業建立一條適合市場快速變化的開發團隊,以達到節省開發成本、縮短開發時間,快速適應市場變化的目的。      A

winform 自動更新 釋出IIS

1.新增功能和框架 (控制面板--程式--啟用或關閉windows功能 --打勾(Internet Information Services,Internet Information Services

winform應用程式自動更新版本

我現在做的是由更新程式來更新winform程式,但是最後的目的是想winform自己本身能夠更新吧,還是沒找到好的方法,現記錄下有update.exe來更新winform.exe。 1.先建一個記錄有版本資訊的xml檔案,update.xml 其中的程式碼如下: <r

asp.net aspx.designer.cs文件不自動更新

family spa 編輯 情況下 規範 ont designer 進行 標簽 一般情況下,對aspx進行編輯後,所對應的aspx.designer.cs文件會自動更新, 但有時候vs會拒絕自動更新。 1.當aspx裏面有錯時; 2.標簽名不規範時,如: <asp:P

unattended-upgrades:好用的無人職守自動更新軟體

unattended-upgraded軟體包:自動更新系統軟體 sudo apt install unattended-upgrades 安裝unattended-upgrades軟體 unattended-upgrades配置檔案常用配置: /etc/apt/apt.con