美文网首页开源项目
棒!有了它,我不再为升级部署发愁了!

棒!有了它,我不再为升级部署发愁了!

作者: 开源指北 | 来源:发表于2022-04-12 22:50 被阅读0次

哈喽,大家好!我是指北君

指北君在一些小型项目实施过程中,常采用快速迭代开发流程,即收集需求->敏捷开发->极速测试->快速部署->收集反馈,这样的过程循环往复,直到该软件项目的使用生命周期结束为止。

这时候,一个良好的升级部署组件包显得很重要,它让你的项目很方便地集成如下功能:组件自更新检查、从服务器取得准确版本组件压缩包、支持断点传续、解压更新包等等。

如果靠自己开发,那就费老牛鼻子劲了,占用项目资源不说,还很有可能拖延项目交付时间!所以,还是要依靠开源!

指北君用过一个开源的升级部署组件包,非常好用!有了它,不用大费心力去自己开发,重复别人走过的坑;有了它,你就可以很轻松的完成迭代快速升级,只管把更新包上传到服务器就行,用户只要启动软件,就会自动发现新版更新包并自动下载、更新(当然,也可以设置允许用户拒绝更新,哈哈)。你现在很好奇这是什么了吧?当当,指北君来告诉你,可爱的GeneralUpdate组件闪亮登场啦!

一、组件介绍

GeneralUpdate是立志于成为全平台更新客户端的框架,提供高性能低损耗,断点续传、逐版本更新、二进制差分更新、增量更新功能、配置文件保留更新等特性。

二、功能介绍

组件包由以下几大模块组成,每个模块的主要功能和适用范围从名字上就能看出来:

  • GeneralUpdate.Core:断点续传、逐版本更新。
  • GeneralUpdate.ClientCore:断点续传、逐版本更新、更新组件自更新、便捷启动更新组件
  • GeneralUpdate.AspNetCore:服务端支持更新包下载地址、版本信息等内容。
  • GeneralUpdate.Zip:解压更新包、解压进度通知。
  • GeneralUpdate.Single:应用程序单例运行。
  • GeneralUpdate.Common:组件公共类、方法。
  • 源码"sql"目录下包含mysql数据库表内容的生成脚本。

三、支持框架

四、运行逻辑

GeneralUpdate是基于.net standard开发的一款(c/s应用)自动升级程序。该组件将更新的核心部分抽离出来方便应用于多种项目当中。目前适用于WPF、控制台应用、WinForm。其核心运行逻辑可以参见下图。

五、运行效果

六、使用示例

  1. GeneralUpdate.ClientCore使用示例
    private ClientParameter clientParameter;
    private GeneralClientBootstrap generalClientBootstrap;
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Task.Run(async()=>
        {
            //主程序信息
            var mainVersion = "1.1.1";
            var mianType = 1;
            //该对象用于主程序客户端与更新组件进程之间交互用的对象
            clientParameter = new ClientParameter();
            //更新组件的版本号
            clientParameter.ClientVersion = "1.1.1";
            //客户端类型:1.主程序客户端 2.更新组件
            clientParameter.ClientType = 2;
            //更新程序exe名称
            clientParameter.AppName = "AutoUpdate.ConsoleApp";
            //主程序客户端exe名称clientParameter.MainAppName = "AutoUpdate.Test";
            //本机的客户端程序应用地址
            clientParameter.InstallPath = @"D:\update_test";
            //更新公告网页
            clientParameter.UpdateLogUrl = "https://www.baidu.com/";
            //更新组件请求验证更新的服务端地址
            clientParameter.ValidateUrl = $"https://127.0.0.1:5001/api/update/getUpdateValidate/{clientParameter.ClientType }/{clientParameter.ClientVersion }";
            //更新组件更新包下载地址
            clientParameter.UpdateUrl = $"https://127.0.0.1:5001/api/update/getUpdateVersions/{clientParameter.ClientType }/{ clientParameter.ClientVersion }";
            //主程序客户端请求验证更新的服务端地址
            clientParameter.MainValidateUrl = $"https://127.0.0.1:5001/api/update/getUpdateValidate/{ mianType }/{ mainVersion }";
            //主程序客户端更新包下载地址
            clientParameter.MainUpdateUrl =
            $"https://127.0.0.1:5001/api/update/getUpdateVersions/{ mianType }/{ mainVersion }";
            generalClientBootstrap = new GeneralClientBootstrap();
            //单个或多个更新包下载通知事件
            generalClientBootstrap.MutiDownloadProgressChanged +=
            OnMutiDownloadProgressChanged;
            //单个或多个更新包下载速度、剩余下载事件、当前下载版本信息通知事件
            generalClientBootstrap.MutiDownloadStatistics +=
            OnMutiDownloadStatistics;
            //单个或多个更新包下载完成
            generalClientBootstrap.MutiDownloadCompleted +=
            OnMutiDownloadCompleted;
            //完成所有的下载任务通知
            generalClientBootstrap.MutiAllDownloadCompleted +=
            OnMutiAllDownloadCompleted;
            //下载过程出现的异常通知
            generalClientBootstrap.MutiDownloadError += OnMutiDownloadError;
            //整个更新过程出现的任何问题都会通过这个事件通知
            generalClientBootstrap.Exception += OnException;
            //ClientStrategy该更新策略将完成1.自动升级组件自更新 2.启动更新组件 3.配置好
            ClientParameter无需再像之前的版本写args数组进程通讯了。
            generalClientBootstrap.Config(clientParameter).
            Strategy<ClientStrategy>();
            await generalClientBootstrap.LaunchTaskAsync();
        });
    }
    private void OnMutiDownloadStatistics(object sender,
    MutiDownloadStatisticsEventArgs e)
    {
        //e.Remaining 剩余下载时间
        //e.Speed 下载速度
        //e.Version 当前下载的版本信息
    }
    private void OnMutiDownloadProgressChanged(object sender,
    MutiDownloadProgressChangedEventArgs e)
    {
        //e.TotalBytesToReceive 当前更新包需要下载的总大小
        //e.ProgressValue 当前进度值
        //e.ProgressPercentage 当前进度的百分比
        //e.Version 当前下载的版本信息
        //e.Type 当前正在执行的操作 1.ProgressType.Check 检查版本信息中
        2.ProgressType.Donwload 正在下载当前版本 3. ProgressType.Updatefile 更新当前版本 4.
        ProgressType.Done更新完成 5.ProgressType.Fail 更新失败
        //e.BytesReceived 已下载大小
    }
  1. GeneralUpdate.Core使用示例
    static void Main(string[] args)
    {
        var resultBase64 = args[0];
        var bootstrap = new GeneralUpdateBootstrap();
        bootstrap.Exception += OnException;
        bootstrap.MutiDownloadError += OnMutiDownloadError;
        bootstrap.MutiDownloadCompleted += OnMutiDownloadCompleted;
        bootstrap.MutiDownloadStatistics += OnMutiDownloadStatistics;
        bootstrap.MutiDownloadProgressChanged += OnMutiDownloadProgressChanged;
        bootstrap.MutiAllDownloadCompleted += OnMutiAllDownloadCompleted;
        bootstrap.Strategy<DefaultStrategy>().
        Option(UpdateOption.DownloadTimeOut, 60).
        RemoteAddressBase64(resultBase64).
        LaunchAsync();
    }

以上示例就介绍到这里啦,有需求的伙伴可以通过后台自行获取项目地址继续深入。

七、指北君有话说

这个开源项目提供全部源代码,方便大家下载,还提供了很详细的文档说明。
以指北君使用经验来看,这个组件包已经基本满足了在迭代小型项目中实现自动升级组件功能。大家可以多多尝试。该项目的团队依然在继续维护,反馈很热烈,前途远大啊。

这么好的开发工具包,在项目开发过程中会让你省心很多。所以指北君很有诚意的推荐这款GeneralUpdate组件包啦。还有,通过对源代码的学习,可以提高自己的水平。

开源指北,立志做最好的开源分享平台,分享有趣实用的开源项目。
欢迎加入交流群,你可以摸鱼、划水、吐槽、咨询。
还有简历模板、各种技术面试资料等100G的资源等着你领取哦。
公众号回复888马上加入,快来一起来聊一聊吧!

开源指北公众号回复 GeneralUpdate 获取资源。

以上就是本次推荐的全部内容,我是指北君,感谢各位的观看。

相关文章

  • 棒!有了它,我不再为升级部署发愁了!

    哈喽,大家好!我是指北君。 指北君在一些小型项目实施过程中,常采用快速迭代开发流程,即收集需求->敏捷开发->极速...

  • 2018

    2018,我的目标,不再为钱发愁,

  • 不想再为写文案而发愁了

    坚持写作的这么多年,除了字数在不断的增加,好像没什么别的变化,最近发现一门文案课,试听了一下,感觉不错,在写作的坑...

  • 蛋炒饭

    最近迷上了蛋炒饭。 如今每天早晨的蛋炒饭成为我的最爱,如果看到冰箱里有头天或者前天剩下的米饭,我就不再为早饭发愁了...

  • 很多年后

    很多年后 我看不到你了 我们不会再为慌张的梦魇发愁 也不必再被明天的饭食锱铢必较 不管你珍不珍惜 日子就是这样的 ...

  • 找点儿刺激

    自从找到了工作,每月有2000的固定收入,我不再为生存而发愁,抱着工作的大西瓜,便不想捡写作的芝麻了。 就算有空闲...

  • 新零售是什么,如何利用新零售创业

    新零售是一互联网为依托,利用互联网共享大数据,分享裂变模式,让创业不再为资金发愁,创业不再为货源发愁,创业不再为人...

  • 不再为我的相貌发愁

    我,性格内向,也不苟言笑。 听歌,是我的兴趣,凡是我喜欢听的歌,不论多久的,都百听不厌。 玩手机,玩游戏是我的消遣...

  • 不再为教学发愁!

    如何挑选出优质的国际原版课程? 如何让家长和孩子接受到更好的英文教育理念? 下载【英浦教师在线】APP 牛津、霍顿...

  • 有了它――这个春天不上火

    菊花茶,是使用菊花为原料制成而成的花草茶,经过鲜花采摘、阴干、生晒蒸晒、烘培等工序制作而成。 菊花茶具有清热除火、...

网友评论

    本文标题:棒!有了它,我不再为升级部署发愁了!

    本文链接:https://www.haomeiwen.com/subject/kmcosrtx.html