基于文件hash的桌面应用程序增量更新方法和系统技术方案

技术编号:34928512 阅读:19 留言:0更新日期:2022-09-15 07:23
本发明专利技术提供了一种基于文件hash的桌面应用程序增量更新方法和系统,包括:步骤1:使用代码编译工具对代码进行编译打包;步骤2:计算打包产物的hash;步骤3:将计算得到的hash以及发布的版本号以键值对的形式写入JSON文件中,然后重新启动应用完成更新。本发明专利技术旨在提供一种高效低成本的Electron应用远程更新方案,且该方案支持版本回退,方便快捷,成本低,效率高,适用于需要进行版本回退的生产线上发布情景。景。景。

【技术实现步骤摘要】
基于文件hash的桌面应用程序增量更新方法和系统


[0001]本专利技术涉及桌面应用程序增量更新
,具体地,涉及一种基于文件hash的桌面应用程序增量更新方法和系统。

技术介绍

[0002]用户安装应用后,传统的应用更新方案是检测到新版本后下载完整的新版安装包,通过重新安装的方式进行升级。由于安装包体积动辄几十上百MB体积,所以用户的更新成本高,效率低。
[0003]采用Electron技术开发的桌面应用必须包含node运行环境以及浏览器内核,所以即使业务逻辑代码体积非常小,但是完整的应用体积却非常庞大。
[0004]专利文献CN107256161A(申请号:CN201710441150.X)公开了一种基于electron技术的客户端升级方法,包括如下步骤:一.打包内容升级包:二.检测升级并下载内容升级包:版本检测服务根据配置信息判断:A.不用升级;B.容器版本需要升级;C.内容版本需要升级;三.安装内容升级包;四.加载内容升级包:加载后返回第二步。该专利实现了仅对内容包进行更新,但并不是对内容包的增量更新,其仍然会对一些不必要的更新内容,在业务代码庞大的项目中,该方案仍然存在更新效率低下的问题。

技术实现思路

[0005]针对现有技术中的缺陷,本专利技术的目的是提供一种基于文件hash的桌面应用程序增量更新方法和系统。
[0006]根据本专利技术提供的基于文件hash的桌面应用程序增量更新方法,包括:
[0007]步骤1:使用代码编译工具对代码进行编译打包;r/>[0008]步骤2:计算打包产物的hash;
[0009]步骤3:将计算得到的hash以及发布的版本号以键值对的形式写入JSON文件中,然后重新启动应用完成更新。
[0010]优选的,当客户端启动应用的时候检测客户端是否更新,若发现更新则判断是增量更新还是回退更新,若是增量更新,则查找远程manifest.json中新增的文件以及文件hash有更新的项,下载到本地临时目录,备份源文件至backup目录,使用新文件替换需要的更新文件;若是回退更新,则读取backup目录中的文件及对应的hash,反向替换需要回退的文件,重启客户端完成更新。
[0011]优选的,增量更新过程包括:
[0012]查找远程JSON文件,将远程JSON文件中的每个hash值与本地存储hash值的文件中每个hash作对比,筛选出文件hash有更新的项,通过筛选出来的有更新的hash来查找远程JSON中新增的文件,下载到本地临时目录中;
[0013]备份源文件及该文件对应的文件hash和该文件的新的文件hash至upload目录,使用新文件替换需要更新的文件,然后重启客户端完成更新。
[0014]优选的,回退更新过程包括:
[0015]读取upload目录文件及文件对应的hash和新增hash,使用读取出的新增hash和本地存储的文件hash作对比,查找出不同的hash,并取出该hash对应的需要回退的文件;
[0016]使用备份文件替换需要回退的文件,并将替换下来的文件及文件对应的hash和该文件的旧版本文件的hash备份至upload目录中,然后重启客户端完成更新。
[0017]优选的,在项目第一次发布时创建本地存储hash的文件,在每次更新后将远端文件的hash与对应的版本号更新到本地该文件中。
[0018]根据本专利技术提供的基于文件hash的桌面应用程序增量更新系统,包括:
[0019]模块M1:使用代码编译工具对代码进行编译打包;
[0020]模块M2:计算打包产物的hash;
[0021]模块M3:将计算得到的hash以及发布的版本号以键值对的形式写入JSON文件中,然后重新启动应用完成更新。
[0022]优选的,当客户端启动应用的时候检测客户端是否更新,若发现更新则判断是增量更新还是回退更新,若是增量更新,则查找远程manifest.json中新增的文件以及文件hash有更新的项,下载到本地临时目录,备份源文件至backup目录,使用新文件替换需要的更新文件;若是回退更新,则读取backup目录中的文件及对应的hash,反向替换需要回退的文件,重启客户端完成更新。
[0023]优选的,增量更新过程包括:
[0024]查找远程JSON文件,将远程JSON文件中的每个hash值与本地存储hash值的文件中每个hash作对比,筛选出文件hash有更新的项,通过筛选出来的有更新的hash来查找远程JSON中新增的文件,下载到本地临时目录中;
[0025]备份源文件及该文件对应的文件hash和该文件的新的文件hash至upload目录,使用新文件替换需要更新的文件,然后重启客户端完成更新。
[0026]优选的,回退更新过程包括:
[0027]读取upload目录文件及文件对应的hash和新增hash,使用读取出的新增hash和本地存储的文件hash作对比,查找出不同的hash,并取出该hash对应的需要回退的文件;
[0028]使用备份文件替换需要回退的文件,并将替换下来的文件及文件对应的hash和该文件的旧版本文件的hash备份至upload目录中,然后重启客户端完成更新。
[0029]优选的,在项目第一次发布时创建本地存储hash的文件,在每次更新后将远端文件的hash与对应的版本号更新到本地该文件中。
[0030]与现有技术相比,本专利技术具有如下的有益效果:
[0031]本专利技术旨在提供一种高效低成本的Electron应用远程更新方案,且该方案支持版本回退,方便快捷,成本低,效率高,适用于需要进行版本回退的生产线上发布情景。
附图说明
[0032]通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:
[0033]图1为本专利技术方法流程图。
具体实施方式
[0034]下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变化和改进。这些都属于本专利技术的保护范围。
[0035]实施例:
[0036]本专利技术提供了一种基于文件hash的Electron应用增量更新方法,如图1,首先使用webpack等一类的代码编译工具,对代码进行编译打包,计算出打包产物的hash,将计算得到的文件hash以及发布的版本号以键值对的形式写入JSON文件中,然后启动应用。
[0037]如果发布的版本号和本地存储的版本号不同,将远程JSON文件中的每个hash值与本地存储hash值的文件中每个hash作对比,筛选出hash值不同的项,即为有更新的文件,并将文件下载到本地目录中,同时备份源文件及该文件对应的文件hash和该文件的新的文件hash(记为新增hash)至uplo本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于文件hash的桌面应用程序增量更新方法,其特征在于,包括:步骤1:使用代码编译工具对代码进行编译打包;步骤2:计算打包产物的hash;步骤3:将计算得到的hash以及发布的版本号以键值对的形式写入JSON文件中,然后重新启动应用完成更新。2.根据权利要求1所述的基于文件hash的桌面应用程序增量更新方法,其特征在于,当客户端启动应用的时候检测客户端是否更新,若发现更新则判断是增量更新还是回退更新,若是增量更新,则查找远程manifest.json中新增的文件以及文件hash有更新的项,下载到本地临时目录,备份源文件至backup目录,使用新文件替换需要的更新文件;若是回退更新,则读取backup目录中的文件及对应的hash,反向替换需要回退的文件,重启客户端完成更新。3.根据权利要求2所述的基于文件hash的桌面应用程序增量更新方法,其特征在于,增量更新过程包括:查找远程JSON文件,将远程JSON文件中的每个hash值与本地存储hash值的文件中每个hash作对比,筛选出文件hash有更新的项,通过筛选出来的有更新的hash来查找远程JSON中新增的文件,下载到本地临时目录中;备份源文件及该文件对应的文件hash和该文件的新的文件hash至upload目录,使用新文件替换需要更新的文件,然后重启客户端完成更新。4.根据权利要求2所述的基于文件hash的桌面应用程序增量更新方法,其特征在于,回退更新过程包括:读取upload目录文件及文件对应的hash和新增hash,使用读取出的新增hash和本地存储的文件hash作对比,查找出不同的hash,并取出该hash对应的需要回退的文件;使用备份文件替换需要回退的文件,并将替换下来的文件及文件对应的hash和该文件的旧版本文件的hash备份至upload目录中,然后重启客户端完成更新。5.根据权利要求1所述的基于文件hash的桌面应用程序增量更新方法,其特征在于,在项目第一次发布时创建本地存储hash的文件,在每次更新后将远端文件的hash与对应的版本号更新到本地该文件中。6.一种基于文件h...

【专利技术属性】
技术研发人员:宋金泽郑姣李星星
申请(专利权)人:上海万向区块链股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1