码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C#】自动升级工具


    系列文章

    【C#】最全业务单据号生成(支持定义规则、流水号、传参数)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787

    【C#】日期范围生成器(开始日期、结束日期)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129040663

    【C#】组件化开发,调用dll组件方法
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129492112

    【C#】数据实体类使用
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/128816638

    【C#】单据审批流方案
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/128972545

    【C#】条码管理操作手册
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/126589496

    【C#】IIS平台下,WebAPI发布及异常处理
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/126539836

    【C#】代码模板生成工具
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673

    【C#】MySQL数据库导入工具(批量Excel插入)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323

    【C#】简单二维码制作和打印工具
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/126884228

    【C#】最全单据打印(打印模板、条形码&二维码、字体样式、项目源码)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129415723

    【C#】Windows服务(Service)安装及启停方案
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053794

    【C#】穿透Session隔离,服务调用外部程序(无窗体界面解决)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053033

    【C#】任务计划实现,使用Quartz类
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/123667723

    【C#】源码解析正则表达式
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/118337074

    【C#】软件版本和文件MD5记录(XML操作)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/112513871

    【C#】测试网络是否连通
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/110137288

    【C#】根据名称获取编码(Dictionary获取key方法)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129816701

    【C#】数据建模,你是使用DataTable还是List?
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129792726

    【C#】GridControl控件和数据集双向绑定
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129423755

    【C#】GridControl动态更换DataSource,数据查询异常处理
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/130305424

    【C#】GridControl日期字段显示时分秒
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/130718303

    【C#】GridControl增加选择列(不用二次点击)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/130763713

    【C#】数据库检查工具(可跨库访问)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/97172329

    【C#】代码解析–打印数据集
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/131431829

    【C#】代码解析–截取整个方法函数
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/109817809

    【C#】反射机制,动态加载类文件
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/131435110


    文章目录

    • 系列文章
    • 前言
    • 一、问题描述
    • 二、解决方案
      • 2.1 文件服务器
        • 位置
        • 功能
        • 操作方法
      • 2.2 自动更新管理工具
        • 位置
        • 功能
        • 操作方法
      • 2.3 自动更新程序
        • 位置
        • 功能
        • 操作方法
    • 三、软件开发(源码)
      • 3.1 文件服务器
      • 3.2 二维码生成源码
    • 四、项目展示
    • 五、资源链接


    前言

    我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

    哈喽大家好,本专栏为【项目实战】,有别于【底层库】专栏,我们可以发现增加 了『问题描述』、『项目展示』章节,十分贴合项目开发流程,让读者更加清楚本文能够解决的问题、以及产品能够达到的效果。本专栏收纳项目开发过程中的解决方案,是我项目开发相对成熟、可靠方法的总结,在不涉及职务作品、保密协议 的前提下,我将问题的解决方案重新梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。

    本专栏会持续更新,不断完善,专栏文章关联性较弱(文章之间依赖性较弱,没有阅读顺序)。大家有任何问题,可以私信我。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现复杂的功能。

    ·提示:本专栏为项目实战篇,未接触项目开发的同学可能理解困难,不推荐阅读。
    3A0N000001


    一、问题描述

    我们开发出一个工具,可以集成进项目里,完成软件自动升级。工具包含三大部分:文件服务器、自动更新管理工具、自动更新程序。

    二、解决方案

    2.1 文件服务器

    位置

    服务器端

    功能

    FileServer.exe 提供文件的下载服务,与客户端建立http连接,将服务器上的更新包,以数据流形式传输给客户端。

    操作方法

    方法一:FileServer.exe 双击打开即可以运行。
    在这里插入图片描述

    方法二:部署到IIS上,开机自动运行。

    2.2 自动更新管理工具

    位置

    服务器端

    功能

    AutoUpdateManage.exe 自动更新管理工具,功能:建立连接参数配置、生产软件更新列表。

    操作方法

    AutoUpdateManage.exe 双击打开,【参数设置】服务器连接的配置。
    在这里插入图片描述
    在这里插入图片描述
    【生成更新列表】会在本地生成 update.xml文件,里面内容包含软件的清单列表。
    在这里插入图片描述

    2.3 自动更新程序

    位置

    客户端,用户电脑上。

    功能

    AutoUpdate.exe 负责【客户端】应用的自动升级,与服务端建立链接,接收服务器传来的文件流,将其下载到同级目录下。

    操作方法

    1、把以下文件,拷贝到【客户端】的同级目录。我这里完全下载,没有客户端程序。
    在这里插入图片描述

    2、App.config 为配置文件,修改配置文件
    配置 主程序(启动程序)、服务器URL等信息
    在这里插入图片描述

    参数说明:
    ServerFilePath:服务器文件目录
    ServerUpdateXml:服务器更新清单
    ServerURL:服务器URL
    ServerIP:IP
    ServerPort:端口号
    ClientProgram:客户端主程序(启动程序)
    ClientTemp:客户端更新包的临时目录
    ClientUpdate:是否强制更新

    三、软件开发(源码)

    3.1 文件服务器

    需要引入QRCode组件,它支持一维码(条形码)、二维码(生成)。

    在这里插入图片描述

    3.2 二维码生成源码

    我这里进行封装,只要Bitmap对象就行了,传入的值是标签的编号。

            private Bitmap DrawImage(string a_strLabel)
            {
                Thread.Sleep(500);
                string l_strMode = AppConfig.GetValue("qr_mode");
                string l_strSize = AppConfig.GetValue("qr_size");
                string l_strVersion = AppConfig.GetValue("qr_version");
                string l_strCheckLevel = AppConfig.GetValue("qr_checklevel");
    
                QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
                // 生成二维码内容模式分为三种,数字,数字字母,字节,这个基本上都设置成Byte,支持汉字
                qrCodeEncoder.QRCodeEncodeMode = (QRCodeEncoder.ENCODE_MODE)Enum.Parse(typeof(QRCodeEncoder.ENCODE_MODE), l_strMode);
                // 设置二维码的大小,默认4,在尺寸小的情况下,版本参数过高则设备难以识别二维码
                qrCodeEncoder.QRCodeScale = int.Parse(l_strSize);
                // 设置二维码的版本,默认7 该值影响二维码最高数据容量 7大致对应40个汉字长度,内容超出择需提升该数值
                qrCodeEncoder.QRCodeVersion = int.Parse(l_strVersion);
                // 设置错误校验级别,默认中等,二维码被遮挡住一部分实际上也是能扫出内容的,这个效验级别的意思就是
                // 当遮挡部分最大占整体多少时仍然可以被扫出来,M大概在20%左右,H为30%,级别越高相应的数据容量会缩小
                // 那些中间带图标的二维码,其实就是简单粗暴的用LOGO遮挡住了中间部分
                qrCodeEncoder.QRCodeErrorCorrect = (QRCodeEncoder.ERROR_CORRECTION)Enum.Parse(typeof(QRCodeEncoder.ERROR_CORRECTION), l_strCheckLevel);
    
                return qrCodeEncoder.Encode(a_strLabel, Encoding.UTF8);
            }
    

    四、项目展示

    五、资源链接

  • 相关阅读:
    普通用户如何利用小红书赚钱呢?小红书的流量是真的吗?
    解放计算力:使用并行处理提升python for循环速度
    [Java SDK] [多线程] Java中线程的定制化通信
    实现日期间的运算——C++
    ChatGPT实战100例 - (18) 用事件风暴玩转DDD
    elasticsearch 8.X新特性
    【LeetCode动态规划#14】子序列系列题(最长递增子序列、最长连续递增序列、最长重复子数组、最长公共子序列)
    【MySql进阶】索引详解(二):Mysql InnoDB索引原理、B+树、聚簇索引、二级索引、联合索引
    贪心算法-金条切割问题
    从Apollo配置中心看分布式架构设计
  • 原文地址:https://blog.csdn.net/youcheng_ge/article/details/142263150
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号