搭建Wpf框架(2) —— Wpf客戶端生成安裝包與自動升級包


首先,vs自帶一鍵發布功能,但是一個文件夾打包交付給客戶,還需要解壓,總顯得不夠高級,優點是足夠綠色。

本文介紹兩種常用的打包方式Setup Project和Wix ToolSet。

Setup Project教程非常多,不提供鏈接了,但是那么多教程,一個關鍵點沒有說,那就是添加程序主輸出,那引用的dll怎么辦?總不能每增加一批dll,就改一次打包工程。

除了主輸出以外,還要添加PublishItemsOutputGroup。這樣就能把目標目錄下的文件都添加過來。

 

接下來再說說Wix打包

推薦

Wix鏈接 安裝部署教程(十) --來,用WPF做個漂亮的安裝界面 https://www.cnblogs.com/stoneniqiu/p/4525032.html

詳情去鏈接查看,當然我這里也有改進的地方,那就是目標文件夾下的文件也不能自動添加,但是他是xml編輯項目,那么對一個程序員來說,那么就可以寫個小程序,自動生成了。

先寫個模板文件,需要替換的地方占個位,和代碼生成工具一個套路。

 

 

 上面那個紅框位置,就可以遍歷文件夾自動添加了,然后替換占位符。源碼在AIStudio.Wpf.AClient下的AIStudio.Wpf.WixXmlGenerate工程中。

這個時候安裝包就能很輕松的生成了,但是安裝界面依舊沒什么特色。

大家可以按照用WPF做個漂亮的安裝界面 來做一個,原作者搞的非常棒,可以拿來直接用。wpf界面,大家也可以按照自己的想法改。

 

 

 

 

 

 (尊重一下原作者,上的他的圖,本框架改成了自己的log)


最后,再介紹一種

wpf入門第七篇 使用Squirrel自動更新應用
https://blog.csdn.net/wf824284257/article/details/89164525

這個除了不能定制安裝位置和安裝提示語句,但是生成方式非常簡單,一個命令就生成,還能自動生成升級包,升級起來簡直簡單的不要不要。還是增量升級。缺點是,不能定制化。

 

另外一種自動升級方法是AutoUpdater.NET,缺點是全量升級,怎么增量升級了?各位朋友有好辦法嗎?

本框架分別集成了這兩種升級方法的啟動項目,分別是AIStudio.Wpf.Client和AIStudio.Wpf.Client472。

自動升級部分代碼如下:

 

示例1配置文件為(AutoUpdater.NET)

<add key="ServerIP" value="http://121.36.12.76:5000"/>
<add key="UpdateAddress" value="http://121.36.12.76:5000/Update/AutoUpdater.xml"/>

代碼為:


try { Assembly assembly = Assembly.GetEntryAssembly(); CurrentVersion.Text = $"Current Version: {assembly.GetName().Version}"; LocalSetting.SetAppSetting("Version", CurrentVersion.Text); Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("zh"); AutoUpdater.LetUserSelectRemindLater = true; AutoUpdater.RemindLaterTimeSpan = RemindLaterFormat.Minutes; AutoUpdater.RemindLaterAt = 1; AutoUpdater.ReportErrors = true; AutoUpdater.Synchronous = true; AutoUpdater.Start(LocalSetting.UpdateAddress); } catch (Exception ex) { _logger.Log(LogLevel.Error, LogType.系統異常, ex.ToString()); }

 對比

示例2配置文件為:(Squirrel)

<add key="ServerIP" value="http://121.36.12.76:5000"/>
<add key="UpdateAddress" value="http://121.36.12.76:5000/update"/>

代碼為:

 try
            {
                using (var updateManager = new UpdateManager(LocalSetting.UpdateAddress))
                {
                    CurrentVersion.Text = $"Current version: {updateManager.CurrentlyInstalledVersion()}";

                    LocalSetting.SetAppSetting("Version", updateManager.CurrentlyInstalledVersion().ToString());

                    var releaseEntry = await updateManager.UpdateApp();
                    NewVersion.Text = $"Update Version: {releaseEntry?.Version.ToString() ?? "No update"}";
                    if (releaseEntry != null)
                    {
                        this.Visibility = Visibility.Visible;
                        var r = System.Windows.MessageBox.Show("檢測到新版本,是否重啟更新?");
                        if (r == MessageBoxResult.OK)
                        {
                            UpdateManager.RestartApp();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Log(LogLevel.Error, LogType.系統異常, ex.ToString());
            }

 安裝包地址為(歡迎大家下載查看)http://121.36.12.76:5000/setup:

自動升級包地址為:

 

 

 

 

好了,至此結束。

 

源碼地址:艾竹/AIStudio.Wpf.AClient (gitee.com) 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM