zoukankan      html  css  js  c++  java
  • 搭建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) 

    作者:竹天笑
    互相学习,提高自己。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Codeforces 177G2 Fibonacci Strings KMP 矩阵
    Codeforces Gym100187C Very Spacious Office 贪心 堆
    Codeforces 980F Cactus to Tree 仙人掌 Tarjan 树形dp 单调队列
    AtCoder SoundHound Inc. Programming Contest 2018 E + Graph (soundhound2018_summer_qual_e)
    BZOJ3622 已经没有什么好害怕的了 动态规划 容斥原理 组合数学
    NOIP2016提高组Day1T2 天天爱跑步 树链剖分 LCA 倍增 差分
    Codeforces 555C Case of Chocolate 其他
    NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
    NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
    NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
  • 原文地址:https://www.cnblogs.com/akwkevin/p/14538305.html
Copyright © 2011-2022 走看看