<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      AutoUpdater遷移到Github

      2020-08-10 09:15  圣殿騎士  閱讀(5536)  評論(69)    收藏  舉報

      一. 摘要

        最近一兩年在做跨平臺的解決方案,使應用程序能支持Android, iOS, Windows, MacOs. Linux等操作系統,在Android, iOS上可以使用Google Play Store 和 Apple App Store 只帶的自動更新特性,但在Windows, MacOs. Linux,就需要自己寫解決方案。

      今天新加坡國慶節,由于肺炎疫情,宅在家沒事,就完成了從CodePlex到Github的遷移,該組件已經成功托管到Github,所以大家可以到上面下載其源代碼,也可以提交Issue,具體地址:https://github.com/knightswarrior/AppAutoUpdater 

      2010年我在CodePlex上開源了這個框架,在十年時間內下載量接近百萬,感謝各位社區朋友的支持,我也盡力在努力升級,同時也盡量在工作之余回答各位在使用中的問題,但是可能有一些沒有回復到,希望各位海涵。

      2010-10-18 22-10-52

           眾所周知,對于一般的軟件開發,在開始的時候都會有一個技術選型的階段,最大的選型就是首先要確定是選擇Client/Server模式還是Browser/Server模式。綜合而論:兩者各有優劣,在很多方面都不能被對方互相取代,如在適用Internet、維護工作量等方面,B/S比C/S要強很多;但在運行速度、數據安全、人機交互等方面,B/S就遠不如C/S那么強大。所以綜上所述,凡是C/S的強項,便是B/S的弱項,反之亦然。由于今天討論的是自動更新組件,所以接下來我們就往這方面細講,既然C/S模式在運行速度、數據安全、人機交互有這么多的優點,尤其是客戶端技術日益發展的今天,如何解決客戶端的部署與自動升級問題便是一個非常重要的問題。

      二. 本文提綱

      · 1.摘要

      · 2.本文提綱

      · 3.為什么不使用ClickOnce

      · 4.簡要介紹

      · 5.項目中如何使用

      · 6.具體效果

      · 7.維護與下載

      · 8.總結

      三. 為什么不使用ClickOnce

        在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節里我們來談一下為什么不使用微軟給我們提供的自動更新組件ClickOnce,大家都知道ClickOnce給我們提供了很多功能:簡單說來,ClickOnce 應用程序就是任何使用 ClickOnce 技術發布的 Windows 窗體或控制臺應用程序。可以采用三種不同的方法發布 ClickOnce 應用程序:從網頁發布、從網絡文件共享發布或是從媒體(如 CD-ROM)發布。ClickOnce 應用程序既可以安裝在最終用戶的計算機上并在本地運行(即使當計算機脫機時也可以運行),也可以僅以聯機模式運行,而不在最終用戶的計算機上永久安裝任何內容。ClickOnce 應用程序可以自行更新;這些應用程序可以在較新版本變為可用時檢查較新版本,并自動替換所有更新的文件。開發人員可以指定更新行為;網絡管理員也可以控制更新策略,如將更新標記為強制性的。最終用戶或管理員還可以對更新進行回滾,使應用程序恢復到早期的版本。

        從上面大家可以看出ClickOnce 無疑是微軟對Client/Server模式部署的最佳解決方案,但正是因為它的功能特別強大而且又要使用相當簡單,所以在產品的封裝上就特別嚴實,基本上就暴露了一些簡單的操作接口,這樣就無形把一些定制化的操作拒之于門外,比如:

      1,用戶不能自己指定安裝路徑。

      2,對自動更新流程不能做定制化的操作。

      3,對自動更新的UI不能定制化的設計。

      正因為這幾個原因,所以很多企業都會做一些定制化的組件來實現自動更新的功能,基于此,我們這里也實現了一個非常簡單的自動更新組件.

      四. 簡要介紹

      其實自動更新的原理很簡單,分析起來無非就是簡單的幾步操作,當然實現方式也是大同小異,這里我們就選一種較簡單的方式:

      1.啟動主程序,主程序里面調用升級程序,升級程序連接到IIS或者FTP。

      2.升級程序獲取服務器端XML配置文件中新版本程序的更新日期或版本號或文件大小。

      3.升級程序獲取原有客戶端應用程序的最近一次更新日期或版本號或文件大小,然后兩者進行比較;如果新版本日期>原有程序的最新日期,則提示用戶是否升級;或如果新版本版本號>原有程序的版本號,則提示用戶是否升級;再或如果新版本文件大小>原有程序的文件大小,則提示用戶是否升級。本文主要采用一般的做法,就是通過版本號來進行對比。

      4.如果用戶選擇升級,則獲取下載文件列表;

      5.在本地建立與遠程IIS或者FTP相應的臨時目錄,然后下載到這個臨時目錄文件下;

      6.刪除舊的主程序,拷貝臨時文件夾中的文件到相應的位置;

      8.結束升級流程并重新啟動主程序。 

      根據前面的流程,我們可以簡單設計如下的項目:

      autoupdatersolution

                                                          圖1

      具體類介紹:

      IAutoUpdater.cs         提供外部調用的接口

      AutoUpdater.cs          該組件的主操作類

      Autoupdater.config      本地配置文件

      DownloadConfirm.cs    提示是否有更新頁面

      DownloadProgress.cs    下載進度頁面

      CommonUnitity.cs     一些常用功能

      Config.cs         當更新完畢之后需要更新Config,所以這里需要一個提供序列化的Config類

      ConstFile.cs      一些常量文件

      DownloadFileInfo.cs     需要下載的文件實體類

      LocalFile.cs     本地文件實體類

      RemoteFile.cs     遠程文件實體類

      UpdateFileList.cs     本地的實體類集合

      代碼非常簡單,具體可以下載進行查看,所以這里就不做過多闡述。

      五. 項目中如何使用

      第一步:Host更新的版本到服務器

        如果需要讓客戶端獲取最新的版本,首先我們需要開發人員編譯源代碼并生成文件,然后拷貝到FTP,服務器或者云端目錄下,運行一個自動生成XML文件的程序,把所有的文件都自動生成到一個XML文件,詳細見下圖:

      2010-10-18 23-10-25 
                                      圖2

      第二步:配置本地的Config

        經過第一步的流程,這一步要做的就是配置本地的Config用于監測并下載遠程IIS或者FTP下需要更新的文件,具體如下圖所示:

      2010-10-18 23-13-10

                                                          圖3

      第三步:修改主程序

        首先把AutoUpdater這個DLL引入我們的主項目,然后在主項目中添加如下代碼,當然你可以根據自己的需要進行書寫,這個DLL提供了兩個外部接口,一個接口用于判斷是否有更新及下載,另一個接口則是用于更新出錯時進行回滾操作,具體代碼如下:

            #region check and download new version program
            bool bHasError = false;
            IAutoUpdater autoUpdater = new AutoUpdater();
            try
            {
                autoUpdater.Update();
            }
            catch (WebException exp)
            {
                MessageBox.Show("Can not find the specified resource");
                bHasError = true;
            }
            catch (XmlException exp)
            {
                bHasError = true;
                MessageBox.Show("Download the upgrade file error");
            }
            catch (NotSupportedException exp)
            {
                bHasError = true;
                MessageBox.Show("Upgrade address configuration error");
            }
            catch (ArgumentException exp)
            {
                bHasError = true;
                MessageBox.Show("Download the upgrade file error");
            }
            catch (Exception exp)
            {
                bHasError = true;
                MessageBox.Show("An error occurred during the upgrade process");
            }
            finally
            {
                if (bHasError == true)
                {
                    try
                    {
                        autoUpdater.RollBack();
                    }
                    catch (Exception)
                    {
                       //Log the message to your file or database
                    }
                }
            }
            #endregion

      使用就是這么簡單,更詳細的操作,大家可以下載源碼,也正因為它的簡單,所以大家可以對其修改以滿足具體項目的需求。

      六. 具體效果

      當我們運行主程序(WinForm或者WPF),如果服務器上有最新的版本,就會彈出如下頁面進行提示并讓用戶選擇是否更新。

      2010-10-13 18-05-02

                                                          圖4

      當用戶不需要更新時,可以選擇Skip按鈕跳過并繼續主程序流程,反之則進入如下頁面。

      2010-10-13 18-05-41

                                                          圖5

      在下載的過程中,用戶可以選擇Cancel停止下載并重新回到主流程。

      七. 維護與下載

      該組件已經托管到Github,所以大家可以到上面下載其源代碼,具體地址:https://github.com/knightswarrior/AppAutoUpdater 

      image

      主站蜘蛛池模板: 欧美变态另类zozo| 秋霞电影网| 人妻无码久久久久久久久久久| 国产精品午夜福利精品| 国产精品久久久久久久久久| 国产精品一区二区在线欢| 一区二区亚洲人妻精品| 妺妺窝人体色www婷婷| 亚洲国产欧美在线观看片| 亚洲自拍偷拍福利小视频| 中国美女a级毛片| 日韩人妻一区中文字幕| 国产精品香港三级国产av| 亚洲精品人成网线在播放VA| 18分钟处破好疼哭视频在线观看 | 国产另类ts人妖一区二区| 久久久无码精品午夜| av激情亚洲男人的天堂| 久久午夜无码免费| 国产精品午夜爆乳美女视频| 国产精品日本一区二区不卡视频| 美腿丝袜亚洲综合在线视频| 亚洲一区二区三区在线| 人妻无码| 九九热在线免费精品视频| 一本加勒比hezyo无码人妻| 欧美激情一区二区| 中文字幕av国产精品| 亚洲精品无码高潮喷水在线| 国产仑乱无码内谢| 无码福利写真片视频在线播放| 国产高清一区二区三区视频 | 国产精品成人无码久久久| 国产福利深夜在线播放| 亚洲一区二区精品另类| 国产综合精品一区二区三区| 一区二区三区四区国产综合| 亚洲国产精品无码一区二区三区 | 日韩中文字幕国产精品| 亚洲av久久精品狠狠爱av| 激情在线一区二区三区视频|