CN107256161A - 基于electron技术的客户端升级方法 - Google Patents
基于electron技术的客户端升级方法 Download PDFInfo
- Publication number
- CN107256161A CN107256161A CN201710441150.XA CN201710441150A CN107256161A CN 107256161 A CN107256161 A CN 107256161A CN 201710441150 A CN201710441150 A CN 201710441150A CN 107256161 A CN107256161 A CN 107256161A
- Authority
- CN
- China
- Prior art keywords
- version
- bag
- upgrading
- updating content
- content
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
一种基于electron技术的客户端升级方法,包括如下步骤:一.打包内容升级包:二.检测升级并下载内容升级包:版本检测服务根据配置信息判断:A.不用升级;B.容器版本需要升级;C.内容版本需要升级;三.安装内容升级包;四.加载内容升级包:加载后返回第二步。其优点是A.使用内容升级后,直接把50兆的升级包变成3兆的内容升级包。升级时间大大缩短。B.只升级内容,不升级浏览器内核,使浏览器内核相对稳定。减少反复升级浏览器内核带来的风险。C.内容升级和容器升级是两套平行的升级机制。当需要更新浏览器内核的时候,仍然可以整体升级软件。
Description
技术领域
本发明涉及数据交换,涉及传输控制规程,尤指一种基于electron技术的客户端升级方法。
背景技术
Electron是一种打包了浏览器内核webkit和nodejs的运行环境。使用Electron,javascript,html,css这些web开发技术可以用来开发客户端。Electron程序开发完成后,使用javascript,html,css开发的H5程序和Electron提供的运行环境一起被打包成安装包,供用户下载安装。最终安装到用户电脑上运行。Electron技术的出现是革命性的。它带来两个好处1.H5技术也可以用来开发客户端程序,不需要C++知识。这样大大降低了开发成本。2.Electron开发的H5程序是跨平台的。
Electron应用程序一旦被用户下载安装就需要后续的软件升级,确保用户能用上最新的功能。现有的升级流程一般是这样的。当用户启动软件的时候,软件发送当前的版本信息到一个后台版本升级服务,版本升级服务根据配置检测是否需要引导用户升级,并下发升级包的地址。这个升级包是一个全新的安装包,包含electron运行环境和H5程序。Windows上安装包是一个setup安装文件,mac上则是一个app包或是一个dmg镜像。当新的安装文件下载后,启动新版本安装。
现有的升级方法存在这样一个缺点:打包了Electron运行环境和H5程序的安装包比较大,造成下载升级不方便。安装包较大的主要原因还是因为Electron运行环境比较大,大概40-50M大小,包含浏览器webkit内核和nodejs组件。而H5程序占比则小的多。每次程序发布新版本,用户都需要下载较大的安装包。安装包越大,用户越难有耐心下载完。
发明内容
针对现有技术的缺点,本发明的目的在于提供一种基于electron技术的客户端升级方法。旨在解决electron程序升级过程中,由于安装包太大,而不方便升级的问题。
本发明解决其技术问题所采用的技术方案是:提供一种基于electron技术的客户端升级方法,其特征在于包括如下步骤:
一.打包内容升级包:
首先制作内容升级包,把一个文件夹的所有升级内容打包为一个文件;使用asar文件作为内容包的格式;打包asar内容包后,一并打包版本描述json文件为zip包,作为内容升级包;
二.检测升级并下载内容升级包:
在内容升级包中增加内容版本号标识;使一个软件有两个版本号,一个是原来的软件的容器版本号,一个是内容升级包的版本号;把容器版本号和内容版本号一起发给版本检测服务;版本检测服务根据配置信息判断:
A.当前版本均为最新版本,不用升级,执行原客户端软件;
B.容器版本需要升级;执行全量安装包升级,然后返回第一步;
C.内容版本需要升级;由版本检测服务告诉前端内容升级包的地址和内容升级包的md5哈希值;前端下载内容升级包到一个临时目录后校验md5哈希值;md5不正确,则删除安装包,并询问用户,下载出错是否重试,是则返回第一步,否则退出;md5正确则执行如下第三步;
三.安装内容升级包:
把内容升级包移动到有写入权限的目录,解压缩出asar文件和元数据文件;在元数据文件中增加当前运行程序的容器版本和内容版本;作废已安装的内容升级包作废已安装的内容升级包;
四.加载内容升级包:
重新启动程序,首先检查数据目录中是否有内容升级包;如果内容升级包的元数据文件中的容器版本匹配当前容器的版本,则内容升级包有效,可以从内容包中加载H5入口页面index.html;如果版本不匹配,说明升级包无效,则删除内容包,并加载安装目录下的内容包中的index.html;加载后返回第二步。
本发明的有益效果是:
A.使用内容升级后,直接把50兆的升级包变成3兆的内容升级包。升级时间大大缩短。
B.只升级内容,不升级浏览器内核,使浏览器内核相对稳定。减少反复升级浏览器内核带来的风险。
C.另外,内容升级和容器升级是两套平行的升级机制。当需要更新浏览器内核的时候,仍然可以整体升级软件。
附图说明
下面结合附图对本发明作进一步的描述。
图1是本发明的流程方框图。
图2是本发明的内容升级包结构示意图。
图3是本发明的内容升级包安装后的结构示意图。
具体实施方式
参见附图,本发明一种基于electron技术的客户端升级方法,其特征在于包括如下步骤:
一.打包内容升级包:
内容升级首先需要制作内容升级包;asar是一种类似于tar的文件格式,相当于把一个文件夹的所有内容打包为一个文件;Electron支持直接运行打包了所有h5资源的asar文件;因此可以使用asar文件作为内容包的格式;但是,由于asar文件由于没有元数据,不方便直接查看asar内容包的版本号,且无压缩,不方便网络传输;我们打包asar内容包后,一并打包版本描述json文件为zip包,作为内容升级包;内容包升级的时候解压缩zip包;程序启动时加载asar文件中的H5入口页面index.html;
二.检测升级并下载内容升级包:
为了实现内容升级的检测,内容包中必须增加内容版本号标识;这样一个软件就有了两个版本号,一个是原来的软件的版本号,即容器版本号,一个是内容包的版本号;软件启动检测版本的时候,把容器版本号和内容版本号一起发给版本检测服务(图1C);版本检测服务根据配置信息返回给软件三种情况:1.不用升级;2.需要容器升级;3.需要内容升级;第一种情况,表明当前软件为最新版本,可以正常启动;第二种情况就是原来的全量安装包升级机制,仍保留,作为内容升级的补充;第三种情况,是本文所述内容升级;版本检测服务需要告诉前端内容升级包的地址,内容升级包的md5哈希值;md5哈希值用于校验下载的升级包真实性;接着,前端下载内容升级包到一个临时目录后(图1D),校验md5哈希值;md5不正确,则删除安装包,并询问用户,下载出错是否重试;md5正确则说明内容升级包可用,可以安装内容升级包;
三.安装内容升级包:
由于程序是没有权限修改软件的安装目录下的文件的,即windows下面非管理员账户启动的软件无权限修改Program Files目录下的自身的安装文件,而mac下的程序可以修改app包内容,但会破坏数字签名证书,造成程序不可用;这样内容升级包直接替换安装目录下的内容包是不可行的;本方案把内容升级包移动到有写入权限的目录,比如程序的数据目录,windows下为AppData\Roaming\YourApp,mac为~/Library/ApplicationSupport/YourApp;移动上一步下载的内容升级包至此,并解压缩出asar文件和元数据文件(图1E);同时,在元数据文件中增加当前运行程序的容器版本和内容版本;这个版本号需要在程序加载内容包的时候检查;这个措施确保当程序容器升级的时候,作废已安装的内容升级包;
四.加载内容升级包:
有了上一步的内容升级包后,程序在重新启动的时候首先检查数据目录中是否有内容升级包;如果内容升级包的元数据文件中的容器版本匹配当前容器的版本,则内容升级包有效,可以从内容包中加载H5入口页面index.html;如果版本不匹配,说明升级包无效,则删除内容包,并加载安装目录下的内容包中的index.html(图1B);加载后进行步骤二所述的版本升级检测。
在本发明的实施例中:
使用两个版本号分别标示容器和内容的版本号。启动的时候,首先把容器版本号和内容版本号通过http请求发给后台版本检测服务https://update.gf.com.cn/update/containerApp/checkVersion。内容升级的时候,后台版本检测服务返回内容升级包的大小,md5和地址给前端。前端下载地址中的升级包到临时目录,并校验大小,md5。如果大小,md5正确,升级包被移动到程序的数据目录下,进行安装。否则,则提示下载出错。(数据目录是一个有写入权限的目录,windows下为~\AppData\Roaming\gf-trader,mac为~/Library/Application Support/gf-trader)。
下载的内容升级包是一个zip文件,包含一个asar文件,一个元数据json文件。Asar文件是打包的h5资源(类似于tar文件,Electron运行时支持直接加载asar文件中的html页面包括js,html,css,图片等文件),元数据文件则描述这个升级包的版本号信息。安装过程首先解压内容升级zip包。然后,在元数据json文件中追加写入当前被升级的软件的内容包版本号和容器版本号,最后重启软件。
重新启动后,至易版在加载过程中,首先检查程序的数据目录中是否有升级包。不存在内容升级包,则从软件内置的内容包加载入口html文件。存在内容升级包,则读取元数据json文件,并判断升级包的版本号和容器版本号是否和当前启动的软件的容器版本号、内容版本号匹配。如果容器版本号不匹配,说明内容升级包已经不适用于当前安装的软件版本,则删除失效的内容升级包,并从软件中内置的内容包加载。如果匹配,则加载内容升级包asar文件中H5入口页面。内容升级完成。
Claims (1)
1.一种基于electron技术的客户端升级方法,其特征在于包括如下步骤:
一.打包内容升级包:
首先制作内容升级包,把一个文件夹的所有升级内容打包为一个文件;使用asar文件作为内容包的格式;打包asar内容包后,一并打包版本描述json文件为zip包,作为内容升级包;
二.检测升级并下载内容升级包:
在内容升级包中增加内容版本号标识;使一个软件有两个版本号,一个是原来的软件的容器版本号,一个是内容升级包的版本号;把容器版本号和内容版本号一起发给版本检测服务;版本检测服务根据配置信息判断:
A.当前版本均为最新版本,不用升级,执行原客户端软件;
B.容器版本需要升级;执行全量安装包升级,然后返回第一步;
C.内容版本需要升级;由版本检测服务告诉前端内容升级包的地址和内容升级包的md5哈希值;前端下载内容升级包到一个临时目录后校验md5哈希值;md5不正确,则删除安装包,并询问用户,下载出错是否重试,是则返回第一步,否则退出;md5正确则执行如下第三步;
三.安装内容升级包:
把内容升级包移动到有写入权限的目录,解压缩出asar文件和元数据文件;在元数据文件中增加当前运行程序的容器版本和内容版本;作废已安装的内容升级包作废已安装的内容升级包;
四.加载内容升级包:
重新启动程序,首先检查数据目录中是否有内容升级包;如果内容升级包的元数据文件中的容器版本匹配当前容器的版本,则内容升级包有效,可以从内容包中加载H5入口页面index.html;如果版本不匹配,说明升级包无效,则删除内容包,并加载安装目录下的内容包中的index.html;加载后返回第二步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710441150.XA CN107256161B (zh) | 2017-06-13 | 2017-06-13 | 基于electron技术的客户端升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710441150.XA CN107256161B (zh) | 2017-06-13 | 2017-06-13 | 基于electron技术的客户端升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107256161A true CN107256161A (zh) | 2017-10-17 |
CN107256161B CN107256161B (zh) | 2021-01-12 |
Family
ID=60024132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710441150.XA Active CN107256161B (zh) | 2017-06-13 | 2017-06-13 | 基于electron技术的客户端升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107256161B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647039A (zh) * | 2018-04-10 | 2018-10-12 | 北京奇安信科技有限公司 | 一种数据升级的处理方法及装置 |
CN110764805A (zh) * | 2019-10-28 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 客户端无感升级的方法、装置、终端及存储介质 |
CN111368265A (zh) * | 2020-02-20 | 2020-07-03 | 广发证券股份有限公司 | 一种适用于electron的加密方法 |
CN112463198A (zh) * | 2020-12-09 | 2021-03-09 | 深圳智药科技有限公司 | 基于Electron的更新方法及系统 |
CN112527371A (zh) * | 2020-12-17 | 2021-03-19 | 杭州海康威视数字技术股份有限公司 | 一种引导加载程序升级方法、装置、电子设备及存储介质 |
CN113515292A (zh) * | 2021-04-26 | 2021-10-19 | 中国工商银行股份有限公司 | 客户端应用程序的架构转型方法、装置及设备 |
WO2022120640A1 (zh) * | 2020-12-09 | 2022-06-16 | 深圳智药科技有限公司 | 基于electron的更新方法及系统 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030055918A (ko) * | 2001-12-27 | 2003-07-04 | (주) 만도맵앤소프트 | 무선망을 통한 단말기의 전자지도 온라인 업데이트 방법 |
CN1585926A (zh) * | 2001-09-17 | 2005-02-23 | 索马网络公司 | 软件更新方法、设备和系统 |
CN1763713A (zh) * | 2004-10-22 | 2006-04-26 | 华为技术有限公司 | 一种移动终端软件版本升级方法 |
CN1967477A (zh) * | 2005-11-15 | 2007-05-23 | 乐金电子(沈阳)有限公司 | 电子设备的软件升级装置及方法 |
CN101615129A (zh) * | 2009-07-29 | 2009-12-30 | 中兴通讯股份有限公司 | 应用于分布式系统中的升级方法及版本管理客户端 |
CN102053853A (zh) * | 2010-12-30 | 2011-05-11 | 北京像素软件科技股份有限公司 | 一种网络游戏版本更新方法 |
CN104866340A (zh) * | 2015-04-29 | 2015-08-26 | 小米科技有限责任公司 | 终端设备软件更新方法及装置 |
CN105260209A (zh) * | 2015-10-20 | 2016-01-20 | 珠海金山网络游戏科技有限公司 | 一种程序热更新解决方法 |
CN105931034A (zh) * | 2016-06-29 | 2016-09-07 | 北京零用钱科技有限公司 | 一种电子虚拟货币的获取方法及其移动终端 |
CN106075911A (zh) * | 2016-07-12 | 2016-11-09 | 竞技世界(北京)网络技术有限公司 | 一种网页游戏微端的生成方法及装置 |
CN106371875A (zh) * | 2016-08-31 | 2017-02-01 | 南威软件股份有限公司 | 一种基于html5的手机应用更新机制 |
CN106445634A (zh) * | 2016-09-22 | 2017-02-22 | 乐视控股(北京)有限公司 | 一种容器的监控方法及装置 |
CN106528224A (zh) * | 2016-11-03 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种Docker容器的内容更新方法、服务器及系统 |
CN106528086A (zh) * | 2016-10-10 | 2017-03-22 | 广州视源电子科技股份有限公司 | 一种安卓软件升级的方法及系统 |
-
2017
- 2017-06-13 CN CN201710441150.XA patent/CN107256161B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585926A (zh) * | 2001-09-17 | 2005-02-23 | 索马网络公司 | 软件更新方法、设备和系统 |
KR20030055918A (ko) * | 2001-12-27 | 2003-07-04 | (주) 만도맵앤소프트 | 무선망을 통한 단말기의 전자지도 온라인 업데이트 방법 |
CN1763713A (zh) * | 2004-10-22 | 2006-04-26 | 华为技术有限公司 | 一种移动终端软件版本升级方法 |
CN1967477A (zh) * | 2005-11-15 | 2007-05-23 | 乐金电子(沈阳)有限公司 | 电子设备的软件升级装置及方法 |
CN101615129A (zh) * | 2009-07-29 | 2009-12-30 | 中兴通讯股份有限公司 | 应用于分布式系统中的升级方法及版本管理客户端 |
CN102053853A (zh) * | 2010-12-30 | 2011-05-11 | 北京像素软件科技股份有限公司 | 一种网络游戏版本更新方法 |
CN104866340A (zh) * | 2015-04-29 | 2015-08-26 | 小米科技有限责任公司 | 终端设备软件更新方法及装置 |
CN105260209A (zh) * | 2015-10-20 | 2016-01-20 | 珠海金山网络游戏科技有限公司 | 一种程序热更新解决方法 |
CN105931034A (zh) * | 2016-06-29 | 2016-09-07 | 北京零用钱科技有限公司 | 一种电子虚拟货币的获取方法及其移动终端 |
CN106075911A (zh) * | 2016-07-12 | 2016-11-09 | 竞技世界(北京)网络技术有限公司 | 一种网页游戏微端的生成方法及装置 |
CN106371875A (zh) * | 2016-08-31 | 2017-02-01 | 南威软件股份有限公司 | 一种基于html5的手机应用更新机制 |
CN106445634A (zh) * | 2016-09-22 | 2017-02-22 | 乐视控股(北京)有限公司 | 一种容器的监控方法及装置 |
CN106528086A (zh) * | 2016-10-10 | 2017-03-22 | 广州视源电子科技股份有限公司 | 一种安卓软件升级的方法及系统 |
CN106528224A (zh) * | 2016-11-03 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种Docker容器的内容更新方法、服务器及系统 |
Non-Patent Citations (1)
Title |
---|
WEIXIN_34233421: ""用 Electron 打造跨平台前端 App"", 《HTTPS://BLOG.CSDN.NET/WEIXIN_34233421/ARTICLE/DETAILS/89373687》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647039A (zh) * | 2018-04-10 | 2018-10-12 | 北京奇安信科技有限公司 | 一种数据升级的处理方法及装置 |
CN110764805A (zh) * | 2019-10-28 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 客户端无感升级的方法、装置、终端及存储介质 |
CN110764805B (zh) * | 2019-10-28 | 2024-01-23 | 腾讯科技(深圳)有限公司 | 客户端无感升级的方法、装置、终端及存储介质 |
CN111368265A (zh) * | 2020-02-20 | 2020-07-03 | 广发证券股份有限公司 | 一种适用于electron的加密方法 |
CN111368265B (zh) * | 2020-02-20 | 2022-09-13 | 广发证券股份有限公司 | 一种适用于electron的加密方法 |
CN112463198A (zh) * | 2020-12-09 | 2021-03-09 | 深圳智药科技有限公司 | 基于Electron的更新方法及系统 |
WO2022120640A1 (zh) * | 2020-12-09 | 2022-06-16 | 深圳智药科技有限公司 | 基于electron的更新方法及系统 |
CN112527371A (zh) * | 2020-12-17 | 2021-03-19 | 杭州海康威视数字技术股份有限公司 | 一种引导加载程序升级方法、装置、电子设备及存储介质 |
CN113515292A (zh) * | 2021-04-26 | 2021-10-19 | 中国工商银行股份有限公司 | 客户端应用程序的架构转型方法、装置及设备 |
CN113515292B (zh) * | 2021-04-26 | 2024-04-05 | 中国工商银行股份有限公司 | 客户端应用程序的架构转型方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107256161B (zh) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107256161A (zh) | 基于electron技术的客户端升级方法 | |
US10379846B1 (en) | Systems and methods for real time version control for integrating updated web-based components with a native application | |
US9032383B2 (en) | Automatically updating applications on a client's device without interrupting the user's experience | |
US10664651B2 (en) | Forms conversion and deployment system for mobile devices | |
EP3188009B1 (en) | Development, delivery, deployment and operation of an application | |
US9213537B2 (en) | Robust firmware update with recovery logic | |
US8635522B2 (en) | Hybrid web container for cross-platform mobile applications | |
US8136100B1 (en) | Software installation and icon management support | |
EP3032802B1 (en) | Method for sharing application between terminals, and terminals | |
US8612947B2 (en) | System and method for remotely compiling multi-platform native applications for mobile devices | |
EP2806357A1 (en) | Method and communication device for updating a web application | |
US9594550B2 (en) | Automated patch generation | |
US20130332916A1 (en) | System and method for updating application archive files | |
US20220261333A1 (en) | Continuous development and delivery system | |
US11113045B2 (en) | Image install of a network appliance | |
CN102833350A (zh) | WebApp更新的处理方法和处理装置 | |
CN104809011B (zh) | 一种应用程序的管理方法 | |
CN110879713B (zh) | 一种android端强加密插件热更新管理方法 | |
CN105763626A (zh) | 适用于应用客户端支付的sdk初始化方法 | |
CN104536752A (zh) | 自动生成apk的方法及装置 | |
CN105094919A (zh) | 一种应用程序启动方法 | |
CN107273172A (zh) | 一种基于业务包的数据处理系统、方法及装置 | |
TW201135594A (en) | System for updating software using separated modules and method thereof | |
CN107656767A (zh) | 系统安装包自动更新的方法、装置、智能快递柜 | |
EP3346642A1 (en) | Method and device for managing network element model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Guo Liheng Inventor after: Xin Zhiyun Inventor after: Tan Jiahu Inventor before: Guo Liheng Inventor before: Tan Jiahu |