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

文档序号:31497079发布日期:2022-09-14 07:33阅读:275来源:国知局
基于文件hash的桌面应用程序增量更新方法和系统与流程

1.本发明涉及桌面应用程序增量更新技术领域,具体地,涉及一种基于文件hash的桌面应用程序增量更新方法和系统。


背景技术:

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


技术实现要素:

5.针对现有技术中的缺陷,本发明的目的是提供一种基于文件hash的桌面应用程序增量更新方法和系统。
6.根据本发明提供的基于文件hash的桌面应用程序增量更新方法,包括:
7.步骤1:使用代码编译工具对代码进行编译打包;
8.步骤2:计算打包产物的hash;
9.步骤3:将计算得到的hash以及发布的版本号以键值对的形式写入json文件中,然后重新启动应用完成更新。
10.优选的,当客户端启动应用的时候检测客户端是否更新,若发现更新则判断是增量更新还是回退更新,若是增量更新,则查找远程manifest.json中新增的文件以及文件hash有更新的项,下载到本地临时目录,备份源文件至backup目录,使用新文件替换需要的更新文件;若是回退更新,则读取backup目录中的文件及对应的hash,反向替换需要回退的文件,重启客户端完成更新。
11.优选的,增量更新过程包括:
12.查找远程json文件,将远程json文件中的每个hash值与本地存储hash值的文件中每个hash作对比,筛选出文件hash有更新的项,通过筛选出来的有更新的hash来查找远程json中新增的文件,下载到本地临时目录中;
13.备份源文件及该文件对应的文件hash和该文件的新的文件hash至upload目录,使用新文件替换需要更新的文件,然后重启客户端完成更新。
14.优选的,回退更新过程包括:
15.读取upload目录文件及文件对应的hash和新增hash,使用读取出的新增hash和本地存储的文件hash作对比,查找出不同的hash,并取出该hash对应的需要回退的文件;
16.使用备份文件替换需要回退的文件,并将替换下来的文件及文件对应的hash和该文件的旧版本文件的hash备份至upload目录中,然后重启客户端完成更新。
17.优选的,在项目第一次发布时创建本地存储hash的文件,在每次更新后将远端文件的hash与对应的版本号更新到本地该文件中。
18.根据本发明提供的基于文件hash的桌面应用程序增量更新系统,包括:
19.模块m1:使用代码编译工具对代码进行编译打包;
20.模块m2:计算打包产物的hash;
21.模块m3:将计算得到的hash以及发布的版本号以键值对的形式写入json文件中,然后重新启动应用完成更新。
22.优选的,当客户端启动应用的时候检测客户端是否更新,若发现更新则判断是增量更新还是回退更新,若是增量更新,则查找远程manifest.json中新增的文件以及文件hash有更新的项,下载到本地临时目录,备份源文件至backup目录,使用新文件替换需要的更新文件;若是回退更新,则读取backup目录中的文件及对应的hash,反向替换需要回退的文件,重启客户端完成更新。
23.优选的,增量更新过程包括:
24.查找远程json文件,将远程json文件中的每个hash值与本地存储hash值的文件中每个hash作对比,筛选出文件hash有更新的项,通过筛选出来的有更新的hash来查找远程json中新增的文件,下载到本地临时目录中;
25.备份源文件及该文件对应的文件hash和该文件的新的文件hash至upload目录,使用新文件替换需要更新的文件,然后重启客户端完成更新。
26.优选的,回退更新过程包括:
27.读取upload目录文件及文件对应的hash和新增hash,使用读取出的新增hash和本地存储的文件hash作对比,查找出不同的hash,并取出该hash对应的需要回退的文件;
28.使用备份文件替换需要回退的文件,并将替换下来的文件及文件对应的hash和该文件的旧版本文件的hash备份至upload目录中,然后重启客户端完成更新。
29.优选的,在项目第一次发布时创建本地存储hash的文件,在每次更新后将远端文件的hash与对应的版本号更新到本地该文件中。
30.与现有技术相比,本发明具有如下的有益效果:
31.本发明旨在提供一种高效低成本的electron应用远程更新方案,且该方案支持版本回退,方便快捷,成本低,效率高,适用于需要进行版本回退的生产线上发布情景。
附图说明
32.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
33.图1为本发明方法流程图。
具体实施方式
34.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
35.实施例:
36.本发明提供了一种基于文件hash的electron应用增量更新方法,如图1,首先使用webpack等一类的代码编译工具,对代码进行编译打包,计算出打包产物的hash,将计算得到的文件hash以及发布的版本号以键值对的形式写入json文件中,然后启动应用。
37.如果发布的版本号和本地存储的版本号不同,将远程json文件中的每个hash值与本地存储hash值的文件中每个hash作对比,筛选出hash值不同的项,即为有更新的文件,并将文件下载到本地目录中,同时备份源文件及该文件对应的文件hash和该文件的新的文件hash(记为新增hash)至upload目录,使用新文件替换需要更新的文件,然后重启客户端完成更新。
38.如果发布的版本号和本地存储的版本号相同,读取upload目录文件及文件对应的hash和新增hash,将远程json文件中的每个hash值与从upload中读取的每个新增hash值作对比,筛选出hash值不同的项,即为需要回退的文件,使用upload中读取的源文件的hash与对比筛选出的远程json中的hash再一次作对比,如果相等,则确定该文件为回退文件,取出该hash对应的需要回退的文件的源文件,使用该备份的源文件替换需要回退的文件,并将替换下来的文件及文件对应的hash和该文件的旧版本文件的hash备份至upload目录中,然后重启客户端完成更新。
39.本发明提供了一种基于文件hash的electron应用增量更新方法。本方法在代码打包时计算每个打包产物的文件hash及本次发布版本号,写入manifest.json文件中。当客户端启动应用的时候检测客户端更新,如果发现更新则判断是增量更新还是回退更新,如果是增量更新,则查找远程manifest.json中新增的文件以及文件hash有更新的项,下载到本地临时目录,备份源文件至backup目录,使用新文件替换需要的更新文件;如果是回退更新,则读取backup目录中的文件及对应的hash,反向替换需要回退的文件,重启客户端完成更新。本发明旨在提供一种高效低成本的electron应用远程更新方案,且该方案支持版本回退,方便快捷,成本低,效率高,适用于需要进行版本回退的生产线上发布情景。
40.具体包括如下步骤:
41.步骤1:代码打包。使用webpack等一类的代码编译工具,对代码进行编译打包。webpack打包原理是根据文件间的依赖关系对其进行静态分析,然后将这些模块按指定规则生成静态资源。
42.所述步骤1包括如下步骤:
43.步骤1.1:代码打包的时候,计算每个打包产物的文件hash。(计算hash是webpack等代码编译工具的一个打包机制。每个生成的文件名称都有一个唯一的hash值,该哈希值是根据该文件的内容计算得出的。当要构建的文件内容发生改变的时候,就会生成新的hash值,且该文件的改变并不会影响和它同一个模块下的其他文件。对比就是对比hash值是否相等。)
44.步骤1.2:将所有计算得到的打包产物的文件hash以及本次发布的版本号写入json文件中(即,本次所有计算得到的打包产物的文件hash记录在本次发布的版本号内,以键值对的形式记录)。
45.步骤2:客户端启动应用检查更新。
46.所述步骤2包括如下步骤:
47.步骤2.1:启动应用时检查到客户端有更新,并读取json文件中的版本号,判断本次更新的版本号是否和本地客户端版本号相同,如果版本号不同,则执行如下步骤3所示的操作;如果版本号相同,则执行如下步骤4所示的操作。
48.步骤3:版本增量更新。
49.所述步骤3包括如下步骤:
50.步骤3.1:查找远程json文件,将远程json文件中的每个hash值与本地存储hash值的文件中每个hash作对比,筛选出文件hash有更新的项(即,hash不同的项),通过筛选出来的有更新的hash来查找远程json中新增的文件,下载到本地临时目录中。本地存储hash的文件为项目第一次发布时创建的,每次更新后将远端文件的hash与对应的版本号更新到本地该文件中。
51.步骤3.2:备份源文件及该文件对应的文件hash和该文件的新的文件hash(记为新增hash)至upload目录,使用新文件替换需要更新的文件。
52.步骤4:版本回退更新
53.所述步骤4包括如下步骤:
54.步骤4.1:若检测到本次的更新的版本号与本地应用的版本号相同,则执行版本回退更新,读取upload目录文件及文件对应的hash和新增hash。
55.步骤4.2:使用读取出的新增hash在和本地存储的文件hash作对比,查找出不同的hash,并取出该hash对应的需要回退的文件。
56.步骤4.3:使用备份文件替换需要回退的文件,并将替换下来的文件及文件对应的hash和该文件的旧版本文件的hash备份至upload目录中。
57.步骤5:重启客户端完成更新。
58.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
59.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1