亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#基于FTP協議的簡易軟件自動升級程序

2019-10-29 21:06:09
字體:
來源:轉載
供稿:網友

最近在重寫了一個老的產品條碼掃描程序,客戶端數越有30個,因為經常有更新,C/S維護非常不方便,所以做一個自動更新程序特別有必要。

在網上隨便找了找自動更新的方案,大多使用VS的發布/更新功能,不太喜歡此方案,覺得太麻煩,然后自己初步琢磨了一下如下方案。

現在比較喜歡的編程方式,先畫圖。

軟件更新流程

C#,FTP,軟件自動升級

安裝包的制作

為了簡單,采用了自解壓壓縮包的方式制作更新包,將整個新程序包打包為一個自解壓壓縮包。

以下是我的自解壓包的參數設置,怎樣制作自解壓包網上有很多教程,可以自己去搜索。

常規-解壓路徑:"c:/barcodeSys"
設置-解壓后運行:"c:/barcodeSys/updateLog.txt"
模式:隱藏啟動對話框。
高級:添加快捷方式到桌面
源文件:"c:/barcodeSys/BarcodeMain.exe"
快捷方式名:條碼掃描程序
更新:解壓替換、覆蓋所有。

制作更新程序

因為軟件在更新時Update程序是一直在運行的,這樣在自解壓包解壓時就會無法替換更新程序,所以將Update程序作為一個單獨的窗體程序來做,由主程序啟動時調用。

制作更新程序前,首先解決怎樣判斷是否存在最新版本的問題,我采用FTP服務器上新建一個文本文檔名稱為SvrVer.txt,內容為最新版本號,本地程序文件夾中建立一個文本文檔名稱為Version,內容為本地程序版本號。方法檢查服務器版本號是否與本地版本一致,如果一致則表示不需要更新,否則相反,如下圖

C#,FTP,軟件自動升級

以下為更新程序下載文件部分的代碼

 

long fileSize = helper.GetFileSize(dir+"/Release.exe");  //獲得更新程序文件大小        fileSizes = fileSize;        if (fileSize > 0)        {          updateLabelDelegate("發現最新版本"+ serVer + "!文件大小:" + fileSize+"字節"); //更新界面label控件的委托          int readSize = 0;          bool result = false;          using (FileStream fs = new FileStream("Release.exe", FileMode.Create))          {            string url = "ftp://" + ftpAddress + "/"+dir+"/Release.exe";            Console.WriteLine(url);            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));            request.Credentials = new NetworkCredential(ftpUserName, ftpPassword);            request.Method = WebRequestMethods.Ftp.DownloadFile; ;            Console.WriteLine(request);            request.ContentOffset = fs.Length;            updateLabelDelegate("正在下載新版本... 0字節/" + fileSize + "字節");              using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())            {              fs.Position = fs.Length;              byte[] buffer = new byte[1024*2];              int count = response.GetResponseStream().Read(buffer, 0, buffer.Length);              while (count > 0)              {                fs.Write(buffer, 0, count);                count = response.GetResponseStream().Read(buffer, 0, buffer.Length);                readSize += count;                double pa = (((double)readSize / (double)fileSizes) * 100);                updateProgDelegate((int)pa) ; //更新進度條的委托                UpdateUILabel("正在下載更新..."+ (readSize) + "字節/" + (fileSize) + "字節");                Application.DoEvents();              }              UpdateUILabel("下載完成,正在安裝新版本,請稍等..." + (fileSize) + "字節/" + (fileSize) + "字節");              updateProgDelegate(100);              response.GetResponseStream().Close();            }          }          Process p = Process.Start("Release.exe");  //下載完成后調用自解壓包          p.WaitForExit();  //等待自解壓包解壓完成      p.StartInfo.FileName = "BarcodeMain.exe";//啟動主程序            p.StartInfo.Arguments = "update";//傳遞主啟動程序的參數,以免啟動主程序后再次啟動更新程序            p.Start();//啟動    this.Close();    //關閉更新程序窗口

主程序的部分小修改

因為每次啟動時主程序時會調用Update程序,同時關閉自身進程以準備更新,所以需要在主程序里做一些小事情,否則陷入啟動主程序-啟動更新程序-啟動主程序的就無限循環中了。

1、修改主程序入口Main方法,增加參數

[STAThread]static void Main(string[] arg) //接受參數{  Application.EnableVisualStyles();  Application.SetCompatibleTextRenderingDefault(false);  Application.Run(new Index(arg)); //傳遞給主程序窗體的構造函數}

2、主程序增加帶參數的構造函數

private string[] targ ; //接收的參數public Index(){  InitializeComponent();}public Index(string[] arg) //帶參數的構造函數{  InitializeComponent();  targ = arg;}

3、判斷是否是否帶參數啟動

//檢查執行參數     private static System.Diagnostics.Process p;if (targ.Length==0)  //如果沒有傳遞參數,則調用update程序 {    if (p == null)   {     p = new System.Diagnostics.Process();      p.StartInfo.FileName = "UpdatePrg.exe";      p.Start();      Application.Exit();        }        else        {          if (p.HasExited) //是否正在運行        {        p.Start();       }     }  p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;}

最終的運行效果

C#,FTP,軟件自動升級

最后推薦一個綠色版比較好用的簡易FTP軟件Quick Easy FTP Server,足以滿足更新所用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲a中文字幕| 亚洲aaa激情| 欧美一区二区.| 国产在线视频欧美| 亚洲国产精品国自产拍av秋霞| 黑人巨大精品欧美一区二区免费| 日韩亚洲国产中文字幕| 成人国内精品久久久久一区| 亚洲国产精品成人va在线观看| 伊人久久精品视频| 久久久av电影| 日韩av网址在线观看| 欧美黑人巨大xxx极品| 国产一区二中文字幕在线看| 欧美有码在线观看| 亚洲欧美一区二区三区在线| 欧美重口另类videos人妖| 中文字幕欧美日韩| 日本欧美中文字幕| 欧美午夜片欧美片在线观看| 国产成人亚洲综合91精品| 日韩在线视频免费观看| 91精品视频大全| 在线电影欧美日韩一区二区私密| 欧美精品久久一区二区| 久久久久成人精品| 性欧美xxxx交| 亚洲色图五月天| 羞羞色国产精品| 国产精品久久久久aaaa九色| 亚洲欧美日韩视频一区| 国产精品大片wwwwww| 欧美激情xxxxx| 亚洲人成网站色ww在线| 国产精品亚洲аv天堂网| 91精品国产91久久久久| 日本高清+成人网在线观看| 日韩在线播放视频| 国产91精品网站| 91精品国产91久久久久久| 欧美老妇交乱视频| 欧洲中文字幕国产精品| 久久久亚洲欧洲日产国码aⅴ| 国产精品久久在线观看| 亚洲精品电影网在线观看| 久久影视电视剧免费网站清宫辞电视| 久久久成人av| 97色在线观看| 日韩电视剧免费观看网站| 国产拍精品一二三| 性色av香蕉一区二区| 欧美日韩国产一中文字不卡| 午夜精品一区二区三区在线播放| 欧美一级bbbbb性bbbb喷潮片| 伊人久久久久久久久久久久久| 亚洲影院高清在线| 日本一欧美一欧美一亚洲视频| 亚洲男人天堂九九视频| 日韩国产欧美区| 日韩久久免费视频| 最近日韩中文字幕中文| 欧美激情综合色综合啪啪五月| 亚洲老板91色精品久久| 欧美成人精品在线视频| 亚洲午夜精品久久久久久久久久久久| 日本精品视频网站| 国产在线视频不卡| 国产精品久久久久久av| 国产精品18久久久久久麻辣| 中文字幕精品国产| 清纯唯美日韩制服另类| 91久久综合亚洲鲁鲁五月天| 国产精品第10页| 国产精品91视频| 亚洲第一二三四五区| 国产精品视频午夜| 精品久久久在线观看| 日韩精品视频免费专区在线播放| 欧美中文字幕视频在线观看| 都市激情亚洲色图| 欧美性xxxxxx| 日本国产欧美一区二区三区| 欧美一级淫片aaaaaaa视频| 国产成人综合精品| 精品成人av一区| 米奇精品一区二区三区在线观看| 亚洲成人在线视频播放| 97成人超碰免| 亚洲国产天堂久久综合网| 亚洲欧美日韩中文视频| 九九热99久久久国产盗摄| 国产精品久久久久久久久久东京| 亚洲成av人影院在线观看| 欧美床上激情在线观看| 国产精品白嫩初高中害羞小美女| 久久精品亚洲精品| 国产精品99久久99久久久二8| 97久久精品在线| 欧美三级免费观看| 亚洲综合自拍一区| 亚洲欧洲国产一区| 欧美精品激情在线| 国产97色在线| 国产有码在线一区二区视频| 国产成人av网址| 成人黄色av播放免费| 亚洲国产精品视频在线观看| 欧美日韩激情美女| 久久夜色精品国产欧美乱| 国内精品久久久久| 最近2019中文免费高清视频观看www99| 久久精品中文字幕一区| 国产精品一区专区欧美日韩| 最新国产精品亚洲| 精品久久久久久久大神国产| 亚洲国产高潮在线观看| 国产精品2018| 国产精品久久久久久久久久久新郎| 高潮白浆女日韩av免费看| 国产精品毛片a∨一区二区三区|国| 亚洲免费视频在线观看| 欧美放荡办公室videos4k| 国产做受69高潮| 成人激情综合网| 黄色一区二区在线观看| 日韩免费黄色av| 秋霞成人午夜鲁丝一区二区三区| 国内精品一区二区三区| 欧美电影在线观看网站| 亚洲欧美激情精品一区二区| 国产日韩欧美在线| 精品亚洲永久免费精品| 亚洲欧美日韩一区在线| 久久久久久久亚洲精品| 亚洲第一福利视频| 亚洲一区二区三区乱码aⅴ| 亚洲成人av在线| 国产精品久久久久久中文字| 九九久久久久久久久激情| 久久精品国产91精品亚洲| 日韩久久免费视频| 国产91精品久久久久| 国产精品网址在线| 久久久免费电影| 日韩精品免费电影| 亚洲春色另类小说| 中文字幕亚洲二区| 91国内揄拍国内精品对白| 国产欧美一区二区三区久久| 中文字幕欧美精品在线| 成人欧美一区二区三区黑人| 精品视频在线播放色网色视频| 欧美韩日一区二区| 久久九九热免费视频| 18一19gay欧美视频网站| 亚洲精品二三区| 亚洲最大福利视频| 亚洲大胆人体在线| 欧美日韩一区二区三区| 亚洲人成绝费网站色www| 日本国产欧美一区二区三区| 日本久久久a级免费| 久久资源免费视频| 国产精品日日摸夜夜添夜夜av|