桌面应用的打包方法、装置、电子设备和可读存储介质与流程

文档序号:28960066发布日期:2022-02-19 12:43阅读:154来源:国知局
桌面应用的打包方法、装置、电子设备和可读存储介质与流程

1.本技术涉及计算机软件技术领域,具体而言,涉及一种桌面应用的打包方法、装置、电子设备和可读存储介质。


背景技术:

2.electron是一种可以使用html、css和javascript构建桌面应用的开源项目,它可以兼容mac、windows和linux等多种不同平台,可以构建出多种不同平台下的桌面应用。
3.在实际应用过程中,有的时候需要根据项目需求,通过electron将独立可执行文件(例如python可执行文件或其它)打包到桌面应用中。而某些可执行文件(例如python或其它)必须在指定环境下才能打包出稳定的可执行文件,使得在打包不同平台electron应用的时候需要在特定的平台运行打包脚本,增加打包复杂度和出错率,降低了开发效率。


技术实现要素:

4.本技术的目的包括,例如,提供了一种桌面应用的打包方法、装置、电子设备和可读存储介质,其能够降低应用打包在跨平台时的复杂度和出错率。
5.本技术的实施例可以这样实现:
6.第一方面,本技术提供一种桌面应用的打包方法,所述方法包括:
7.在监测到python程序有代码更新时,基于更新的代码将python程序打包为多个不同平台下的可执行程序;
8.在监测到electron程序有代码更新时,确定多个平台中的目标平台;
9.从多个不同平台下的可执行程序中获得所述目标平台对应的可执行程序;
10.基于获得的可执行程序和更新的electron程序在electron桌面应用对应的打包机中进行打包,得到打包完成的桌面应用程序。
11.在可选的实施方式中,所述方法还包括:
12.将打包完成的桌面应用程序保存在存储服务器中;
13.在接收到客户端发送的更新请求时,获得所述更新请求中携带的所述客户端的平台信息;
14.将所述存储服务器中与所述平台信息对应的桌面应用程序下发至所述客户端。
15.在可选的实施方式中,所述基于更新的代码将python程序打包为多个不同平台下的可执行程序的步骤之后,所述方法还包括:
16.将多个不同平台下的可执行程序保存至存储服务器中,并将各个可执行程序按其所属的平台的版本号设置规则标记对应的版本号。
17.在可选的实施方式中,所述将多个不同平台下的可执行程序保存至存储服务器中,并将各个可执行程序按其所属的平台的版本号设置规则标记对应的版本号的步骤,包括:
18.将多个不同平台下的可执行程序分别保存至存储服务器中预先创建的对应不同
平台的文件中;
19.针对各存入可执行程序的文件,按其所属平台的版本号设置规则在所述文件的文件名中添加版本号信息。
20.在可选的实施方式中,所述从多个不同平台下的可执行程序中获得所述目标平台对应的可执行程序的步骤,包括:
21.确定所述存储服务器中保存的与所述目标平台对应的所有可执行程序;
22.获得所述所有可执行程序中版本号最高的可执行程序。
23.在可选的实施方式中,所述基于更新的代码将python程序打包为多个不同平台下的可执行程序的步骤,包括:
24.获得打包所需的配置文件,所述配置文件中包含程序运行所需的第三方数据库信息以及可执行程序的入口文件信息;
25.根据所述配置文件和更新的代码,在多个不同平台各自对应的打包机中将python程序打包为对应平台的可执行程序。
26.在可选的实施方式中,所述基于获得的可执行程序和更新的electron程序在electron桌面应用对应的打包机中进行打包,得到打包完成的桌面应用程序的步骤,包括:
27.将获得的可执行程序存入至存储服务器的指定目录下;
28.通过electron桌面应用对应的打包机对更新的electron程序进行打包;
29.将打包得到的结果上传至所述存储服务器的指定目录下,得到打包完成的桌面应用程序。
30.第二方面,本技术提供一种桌面应用的打包装置,所述装置包括:
31.第一打包模块,用于在监测到python程序有代码更新时,基于更新的代码将python程序打包为多个不同平台下的可执行程序;
32.确定模块,用于在监测到electron程序有代码更新时,确定多个平台中的目标平台;
33.获得模块,用于从多个不同平台下的可执行程序中获得所述目标平台对应的可执行程序;
34.第二打包模块,用于基于获得的可执行程序和更新的electron程序在electron桌面应用对应的打包机中进行打包,得到打包完成的桌面应用程序。
35.第三方面,本技术提供一种电子设备,包括:
36.存储器,用于存储计算机程序;
37.与所述存储器连接的处理器,用于执行所述计算机程序,以实现前述实施方式任意一项所述的桌面应用的打包方法。
38.第四方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,该程序被执行时实现前述实施方式任意一项所述的桌面应用的打包方法。
39.本技术实施例的有益效果包括,例如:
40.本技术提供一种桌面应用的打包方法、装置、电子设备和可读存储介质,在监测到python程序有代码更新时,基于更新的代码将python程序打包为多个不同平台下的可执行程序,在监测到electron程序有代码更新时,确定多个平台中的目标平台,从多个不同平台下的可执行程序中获得目标平台对应的可执行程序,基于获得的可执行程序和更新的
electron程序在electron桌面应用对应的打包机中进行打包,得到打包完成的桌面应用程序。本方案预先在不同平台下进行python程序的打包得到不同平台下的可执行程序,electron应用可提取所需的可执行程序并在固定的打包机中进行打包,而无需在不同的特定平台下运行打包脚本,如此,可以降低打包在跨平台时的复杂度和出错率。
附图说明
41.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
42.图1为本技术实施例提供的桌面应用的打包方法的应用场景示意图;
43.图2为本技术实施例提供的桌面应用的打包方法的流程图;
44.图3为图2中步骤s101包含的子步骤的流程图;
45.图4为图2中步骤s103包含的子步骤的流程图;
46.图5为图2中步骤s104包含的子步骤的流程图;
47.图6为本技术实施例提供的桌面应用的打包方法的另一流程图;
48.图7为本技术实施例提供的桌面应用的打包方法的交互场景示意图;
49.图8为本技术实施例提供的电子设备的结构框图;
50.图9为本技术实施例提供的桌面应用的打包装置的功能模块框图。
51.图标:110-存储介质;120-处理器;130-桌面应用的打包装置;131-第一打包模块;132-确定模块;133-获得模块;134-第二打包模块;140-通信接口。
具体实施方式
52.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
53.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
54.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
55.在本技术的描述中,需要说明的是,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
56.需要说明的是,在不冲突的情况下,本技术的实施例中的特征可以相互结合。
57.请参阅图1,为本技术实施例提供的桌面应用的打包方法的应用场景示意图,该场景中包含服务器和客户端,其中,客户端可为多个,多个客户端与服务器可通信连接,以实现数据、信息的交互。
58.其中,各客户端可为计算机设备,例如可安装不同系统的终端设备,如mac、windows和linux等。此外,客户端上还可安装不同的桌面应用程序。
59.所述服务器可为桌面应用程序相关的后台服务器,可以是单独的服务器,也可以是由多台服务器构建的集群。
60.可以理解,图1所示的场景仅为一种可行的示例,在其它可行的实施例中,该场景也可以仅包括图1所示组成部分的其中一部分或者还可以包括其它的组成部分。
61.图2示出了本技术实施例提供的桌面应用的打包方法的流程示意图,该桌面应用的打包方法可由图1中所示的服务器实现。应当理解,在其它实施例中,本实施例的桌面应用的打包方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该桌面应用的打包方法的详细步骤介绍如下。
62.s101,在监测到python程序有代码更新时,基于更新的代码将python程序打包为多个不同平台下的可执行程序。
63.s102,在监测到electron程序有代码更新时,确定多个平台中的目标平台。
64.s103,从多个不同平台下的可执行程序中获得所述目标平台对应的可执行程序。
65.s104,基于获得的可执行程序和更新的electron程序在electron桌面应用对应的打包机中进行打包,得到打包完成的桌面应用程序。
66.electron是一个由openjs基金会和一个活跃的贡献者社区管理的开源项目,它基于chromium和node.js实现。electron是一种可以使用html、css和javascript构建桌面应用的项目,可兼容mac、windows和linux,可以构建出三个平台的应用程序。而python是一种编程语言。
67.本实施例中,在触发python的打包工作流时,可利用gitlab的代码提交hook,一旦有新的代码提交到gitlab,就能触发自定义的执行流程,如[执行打包流程]。
[0068]
而python的打包需要在指定环境下才能打包出稳定的可执行文件,因此,本实施例中,在执行python的打包时,可以在更新代码的情况下,将python程序分别在不同平台的打包机下执行打包,例如分别在mac、windows和linux平台对应的打包机下进行打包,如此,可以得到可适应于多个不同平台的可执行程序。
[0069]
本实施例中,在监测python程序的代码更新的同时,对electron程序也进行监控,并在监测到electron程序有代码更新时,触发执行electron程序的打包。
[0070]
在若最终需要得到适应于某个平台的桌面应用时,现有处理方式是python程序和electron程序的打包均在对应平台进行打包,如此,将导致两个进程必须在相同打包机下执行才能成功得到最终的桌面应用,增加了复杂度。并且,如果是多个平台跨平台的情况下,则electron程序则需要在多个不同平台下去执行打包流程,更进一步地增加了执行的复杂度。
[0071]
本实施例中,在监测到electron程序有代码更新时,也即触发electron程序的打包流程时,可以确定多个平台中的目标平台,也即最终需要得到的桌面应用适用的平台。其中,目标平台可以是一个、也可以是多个,具体地根据实际所需确定。
[0072]
在python程序的打包流程中可得到多个适用于不同平台的可执行程序,因此,可以从该多个可执行程序中获得目标平台对应的可执行程序。
[0073]
在此基础上,electron程序的打包可以在一固定的electron桌面应用对应的打包
机中执行,该打包机可以执行得到适用任一平台的桌面应用,任意可执行程序均可于该打包机中,进行electron程序的打包。
[0074]
本实施例所提供的桌面应用的打包方法,预先在不同平台下进行python程序的打包得到不同平台下的可执行程序,electron应用可提取所需的可执行程序并在固定的打包机中进行打包,而无需在不同的特定平台下运行打包脚本,如此,可以降低打包在跨平台时的复杂度和出错率。
[0075]
请参阅图3,本实施例中,在上述步骤s101中,在将python程序打包为多个不同平台下的可执行程序时,可以通过以下方式实现:
[0076]
s1011,获得打包所需的配置文件,所述配置文件中包含程序运行所需的第三方数据库信息以及可执行程序的入口文件信息。
[0077]
s1012,根据所述配置文件和更新的代码,在多个不同平台各自对应的打包机中将python程序打包为对应平台的可执行程序。
[0078]
本实施例中,可利用pyinstaller工具实现python程序的打包,pyinstaller工具在可在windows、gnu/linux、mac os x、freebsd、solaris和aix等下将python应用程序打包为独立的可执行文件。
[0079]
详细地,可使用pyinstaller main.spec命令实现,其中,该命令中包含打包所需的配置文件,如main.spec。主要内容为说明相关依赖(程序运行需要的第三方数据库lib)和定义可执行程序的入口文件(例如main.py)。
[0080]
基于pyinstaller main.spec命令以及python程序更新的代码,在多个不同平台各自的打包机中将python程序打包为可执行程序。
[0081]
本实施例中,在打包得到不同平台的可执行程序后,方法还可包括以下步骤:
[0082]
将多个不同平台下的可执行程序保存至存储服务器中,并将各个可执行程序按其所属的平台的版本号设置规则标记对应的版本号。
[0083]
本实施例中,可将可执行程序保存至可执行程序存储服务器中,详细地,将多个不通过平台下的可执行程序分别保存至存储服务器中预先创建的对应不同平台的文件中。而针对各存入可执行程序的文件,按其所属平台的版本号设置规则在文件的文件名中添加版本号信息。
[0084]
本实施例中,不同平台的可执行程序存入预先创建的不同文件中,例如/home/code/windows/1.2.3或者/home/code/macos/1.2.3,其中1.2.3可为版本号。
[0085]
在实际应用中,可利用gitlab进行版本管理,由代码编写人员控制代码版本。例如,可利用a、b、c来区分更新的版本具体情况,如a为major,b为minor,c为patch。major代表巨大更新,可能影响兼容性。minor代表重要更新,不影响兼容性,主要是功能更新。patch代表补丁更新,主要是修改bug。
[0086]
因此,除了在文件名中添加版本号信息后,还可利用上述字符来表示更新的版本情况,使得后续在提取可执行程序时可一目了解明确各个可执行程序的具体信息。
[0087]
在此基础上,同时对服务器中electron程序的更新进行监测,在electron程序有代码更新时,在上述获得目标平台对应的可执行程序中,可以通过以下方式实现,请结合参阅图4:
[0088]
s1031,确定所述存储服务器中保存的与所述目标平台对应的所有可执行程序。
[0089]
s1032,获得所述所有可执行程序中版本号最高的可执行程序。
[0090]
本实施例中,最终需要得到桌面应用程序,则需要结合python程序得到的可执行程序以及更新的electron程序。而在进行打包时,需要基于最新的可执行程序来实现,可以从上述的可执行程序存储服务器中提取最新的目标平台的可执行程序,例如windows或linux平台等。
[0091]
请参阅图5,在获得最新的可执行程序以及更新的electron程序的情况下,可以通过以下方式实现electron程序的打包:
[0092]
s1041,将获得的可执行程序存入至存储服务器的指定目录下。
[0093]
s1042,通过electron桌面应用对应的打包机对更新的electron程序进行打包。
[0094]
s1043,将打包得到的结果上传至所述存储服务器的指定目录下,得到打包完成的桌面应用程序。
[0095]
本实施例中,在进行electron程序的打包时,可以基于electron-builder进行打包,具体地,可以使用electron-builder命令,该命令不需要特定平台,能够打包全平台程序包。可以通过
‑‑
m/
‑‑
l/
‑‑
w参数分别打包成macos/linux/windows平台的桌面应用程序。
[0096]
本实施例中,在获得目标平台的可执行程序后存入存储服务器的指定目录下,在目标平台为多个时,不同的目标平台的可执行程序的文件格式不同,但可存入指定目录下,以文件格式进行区分。并且,利用electron-builder进行electron程序的打包,可在一固定的打包机中实现打包,而无需在各个目标平台下分别执行。
[0097]
将打包的结果同样存入在存储服务器的指定目录下,具体地,可以将打包结果分别存入指定目录下的不同文件中,例如macos平台下的dmg文件,windows平台下的exe文件,最终得到各个平台的桌面应用程序,例如标记为electron app 1.2.3.dmg。
[0098]
请参阅图6,在基于上述流程得到不同平台的桌面应用程序后,本实施例所提供的桌面应用的打包方法还可包括以下步骤:
[0099]
s105,将打包完成的桌面应用程序保存在存储服务器中。
[0100]
s106,在接收到客户端发送的更新请求时,获得所述更新请求中携带的所述客户端的平台信息。
[0101]
s107,将所述存储服务器中与所述平台信息对应的桌面应用程序下发至所述客户端。
[0102]
本实施例中,可将打包完成的桌面应用保存至桌面应用程序存储服务器中,当客户端的用户需要更新桌面应用时,用户可通过客户端发送更新请求至服务器。该更新请求中可携带客户端的平台信息,例如,macos、linux、或windows等。
[0103]
基于接收到的客户端的更新请求,可以从存储服务器中提取对应平台的桌面应用并下发至客户端。客户端在接收到桌面应用后,可以实现对客户端上当前的桌面应用的更新。
[0104]
请参阅图7所述,结合图7对本实施例所提供的桌面应用的打包方法的整体流程进行介绍。
[0105]
基于gitlab ci/cd,在python代码更新时,触发打包工作流(ci/cd工作流),基于更新的代码至不同平台对应的打包机进行打包,包括如linux、windows、mac等。并将得到的不同平台下的可执行程序保存至可执行程序存储服务器中。在保存时,同步对各个平台的
可执行程序进行版本号标记。如此,可统一各个平台的版本号信息,避免版本号混乱。
[0106]
基于gitlab ci/cd,在electron代码更新时,触发打包工作流(ci/cd工作流),从可执行存储服务器拉取所需的最新的可执行程序,并在electron桌面应用对应的打包机实现打包,将打包得到的桌面应用程序保存至桌面应用程序存储服务器中。
[0107]
在接收到客户端发送的更新请求时,从桌面应用程序存储服务器中确定对应的桌面应用程序,并下发至客户端,以供客户端进行更新。
[0108]
本实施例所提供的桌面应用的打包方法,一方面在python程序打包时,分别在不同平台对应的打包机中实现打包,使得python程序打包可在适宜的环境下实现,以得到稳定的可执行程序。另一方面,在electron程序打包时,统一在一固定的打包机中实现,而无需在各个平台对应的打包机中实现,避免了在跨平台、多平台下打包时,需要分别至各个打包机实现打包存在的实现复杂的问题。
[0109]
并且,python可执行程序和electron桌面应用打包流程相互之间无干扰,版本号分开管理,更有利于版本控制和问题排查。整个打包流程自动化实现,减少了开发者的工作量,容错率更高。并且,规避了electron桌面应用打包时,python可执行程序不是最新版本的情况。整个项目维护成本较低,迁移成本较低,并且能够直接生成更新包上传至桌面应用程序存储服务器,便于客户端更新。
[0110]
请参阅图8,为本技术实施例提供的电子设备的示例性组件示意图,该电子设备可为图1中所示的服务器。该电子设备可包括存储介质110、处理器120、桌面应用的打包装置130及通信接口140。本实施例中,存储介质110与处理器120均位于电子设备中且二者分离设置。然而,应当理解的是,存储介质110也可以是独立于电子设备之外,且可以由处理器120通过总线接口来访问。可替换地,存储介质110也可以集成到处理器120中,例如,可以是高速缓存和/或通用寄存器。
[0111]
桌面应用的打包装置130可以理解为上述电子设备,或电子设备的处理器120,也可以理解为独立于上述电子设备或处理器120之外的在电子设备控制下实现上述桌面应用的打包方法的软件功能模块。
[0112]
如图9所示,上述桌面应用的打包装置130可以包括第一打包模块131、确定模块132、获得模块133和第二打包模块134。下面分别对该桌面应用的打包装置130的各个功能模块的功能进行详细阐述。
[0113]
第一打包模块131,用于在监测到python程序有代码更新时,基于更新的代码将python程序打包为多个不同平台下的可执行程序;
[0114]
可以理解,该第一打包模块131可以用于执行上述步骤s101,关于该第一打包模块131的详细实现方式可以参照上述对步骤s101有关的内容。
[0115]
确定模块132,用于在监测到electron程序有代码更新时,确定多个平台中的目标平台;
[0116]
可以理解,该确定模块132可以用于执行上述步骤s102,关于该确定模块132的详细实现方式可以参照上述对步骤s102有关的内容。
[0117]
获得模块133,用于从多个不同平台下的可执行程序中获得所述目标平台对应的可执行程序;
[0118]
可以理解,该获得模块133可以用于执行上述步骤s103,关于该获得模块133的详
细实现方式可以参照上述对步骤s103有关的内容。
[0119]
第二打包模块134,用于基于获得的可执行程序和更新的electron程序在electron桌面应用对应的打包机中进行打包,得到打包完成的桌面应用程序。
[0120]
可以理解,该第二打包模块134可以用于执行上述步骤s104,关于该第二打包模块134的详细实现方式可以参照上述对步骤s104有关的内容。
[0121]
在一种可能的实施方式中,上述桌面应用的打包装置130还包括下发模块,该下发模块具体可以用于:
[0122]
将打包完成的桌面应用程序保存在存储服务器中;
[0123]
在接收到客户端发送的更新请求时,获得所述更新请求中携带的所述客户端的平台信息;
[0124]
将所述存储服务器中与所述平台信息对应的桌面应用程序下发至所述客户端。
[0125]
在一种可能的实施方式中,上述桌面应用的打包装置130还包括标记模块,该标记模块具体可以用于:
[0126]
将多个不同平台下的可执行程序保存至存储服务器中,并将各个可执行程序按其所属的平台的版本号设置规则标记对应的版本号。
[0127]
在一种可能的实施方式中,所述标记模块具体可以用于:
[0128]
将多个不同平台下的可执行程序分别保存至存储服务器中预先创建的对应不同平台的文件中;
[0129]
针对各存入可执行程序的文件,按其所属平台的版本号设置规则在所述文件的文件名中添加版本号信息。
[0130]
在一种可能的实施方式中,上述获得模块133具体可以用于:
[0131]
确定所述存储服务器中保存的与所述目标平台对应的所有可执行程序;
[0132]
获得所述所有可执行程序中版本号最高的可执行程序。
[0133]
在一种可能的实施方式中,上述第一打包模块131具体可以用于:
[0134]
获得打包所需的配置文件,所述配置文件中包含程序运行所需的第三方数据库信息以及可执行程序的入口文件信息;
[0135]
根据所述配置文件和更新的代码,在多个不同平台各自对应的打包机中将python程序打包为对应平台的可执行程序。
[0136]
在一种可能的实施方式中,上述第二打包模块134具体可以用于:
[0137]
将获得的可执行程序存入至存储服务器的指定目录下;
[0138]
通过electron桌面应用对应的打包机对更新的electron程序进行打包;
[0139]
将打包得到的结果上传至所述存储服务器的指定目录下,得到打包完成的桌面应用程序。
[0140]
在本技术实施例中,对应于上述的桌面应用的打包方法,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序运行时执行上述桌面应用的打包方法的各个步骤。
[0141]
其中,前述计算机程序运行时执行的各步骤,在此不再一一赘述,可参考前文对所述桌面应用的打包方法的解释说明。
[0142]
综上所述,本技术实施例提供的桌面应用的打包方法、装置、电子设备和可读存储
介质,在监测到python程序有代码更新时,基于更新的代码将python程序打包为多个不同平台下的可执行程序,在监测到electron程序有代码更新时,确定多个平台中的目标平台,从多个不同平台下的可执行程序中获得目标平台对应的可执行程序,基于获得的可执行程序和更新的electron程序在electron桌面应用对应的打包机中进行打包,得到打包完成的桌面应用程序。本方案预先在不同平台下进行python程序的打包得到不同平台下的可执行程序,electron应用可提取所需的可执行程序并在固定的打包机中进行打包,而无需在不同的特定平台下运行打包脚本,如此,可以降低打包在跨平台时的复杂度和出错率。
[0143]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1