• C# Winform自动更新


    在Unity里面,有XLua,ILRuntime 这样的热更新框架,Unity和Winform不同之处是,Unity生成的项目,哪怕是Windows平台,根本不必关闭程序才能进行更新,但是Winform项目必须关闭程序才进行下载替换,在Winform平台目前还没看到什么好的开源框架,于是我自己动手写了一个

    效果如下:

    代码暂时不上传了,后续我会更新代码上来,大概步骤如下

    1.新建需要更新的软件

    随便创建一个Winform项目,界面随意弄一个,在软件中设置版本号

    2.更新文件夹列表生成器

    我们知道,在Winform生成项目后,文件不止一个,还可能会存在多个文件夹,但是有的文件是不需要更新,这里的问题是,如何要区分文件是否需要更新呢,于是我需要一个更新文件生成器,用来生成文件列表,和文件的哈希值,当前软件的版本号,每次客户端启动器一打开就联网判断是否需要更新版本。

    更新文件生成器界面如下,将最新的软件文件放到服务器一个固定的文件夹,然后用更新文件生成器就可以生成文件列表等数据了

    不过json文件是加密的,直接是看不出里面有什么的,这个需要在客户端软件启动器中进行解密。

    加密json如下图

    这里加密了文件列表也是为了传输的安全。另外也可以加一些文件完整性校验,这个功能我暂时没加。

    3.搭建更新服务器

    服务器可以使用软件来实现,不用的时候就关掉,在测试的时候,我们不必使用 IIS 这样的服务器,配置起来太麻烦了,软件名如下图

    搭建软件服务器,主要有两个功能,

    1.主要就是让客户端在启动的时候,判断是否需要更新,

    2.当需要更新的时候,主动从服务器下载需要更新的文件

    4.软件启动器

    软件启动器作用是

    1.判断是否需要更新,

    2.判断当前客户端文件哈希值,和服务器文件夹的哈希值是否一致

    3.根据需要执行:下载,覆盖,删除 任务。

    4.完成了文件基本操作,启动客户端本体(这里可以设置客户端只能有软件启动器打开)

     只要打开软件启动器,就能自动判断是否需要更新了,如果需要更新,会自动下载文件到本地,下图就是更新好的文件了,如有重复,会自动覆盖。

    end

  • 相关阅读:
    使用动态标题提炼图表信息
    吉利高端品牌领克汽车携手体验家,重塑智能创新的汽车服务体验
    C生万物之函数
    【我的电赛日记(完结)---2021全国大学生电子设计竞赛全国一等奖】A题:信号失真度测量装置
    超好用,分享8个 Python 自动化脚本
    【5.Vue 父子组件监听数据】
    大数据学习(10)-Explain详解
    【云原生 | Kubernetes 系列】---Prometheus监控Redis
    基于拉格朗日-遗传算法的最优分布式能源DG选址与定容(Matlab代码实现)
    Java入门第114课——使用增强型for循环遍历集合
  • 原文地址:https://blog.csdn.net/qq_38693757/article/details/125252813