CN117519745A - 一种软件升级方法及装置 - Google Patents
一种软件升级方法及装置 Download PDFInfo
- Publication number
- CN117519745A CN117519745A CN202311385934.7A CN202311385934A CN117519745A CN 117519745 A CN117519745 A CN 117519745A CN 202311385934 A CN202311385934 A CN 202311385934A CN 117519745 A CN117519745 A CN 117519745A
- Authority
- CN
- China
- Prior art keywords
- starting
- file
- version
- configuration information
- target software
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000009434 installation Methods 0.000 claims abstract description 49
- 230000008569 process Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 abstract description 11
- 230000002159 abnormal effect Effects 0.000 description 21
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 101150053844 APP1 gene Proteins 0.000 description 2
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 2
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000012857 repacking Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
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/60—Software deployment
- G06F8/61—Installation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种软件升级方法及装置,涉及通信技术领域。该方法为:将目标软件的安装目录下的启动配置信息文件中的启动信息备份到所述安装目录下的启动配置信息备份文件中,以使得所述启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹;在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号;将所述升级包释放到所述新版本文件夹中;在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级,其中,修改后的启动信息指向所述新版本文件夹。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种软件升级方法及装置。
背景技术
软件升级是通过使用特定的软件更新包,对现有软件文件进行部分或整体替换,用以修复现有软件存在的问题、添加新的功能、增强软件的可维护性等。常见的软件升级方案,可以在原有软件的目录中,删除需要被升级的文件,然后将更新包中的文件解压释放到软件安装目录中。但是该方法中,需要在升级时停止软件的使用,从而对正在执行的业务造成不良影响;此外,当升级过程中异常断电导致文件损坏时,无法有效的进行文件的回滚操作,只能使用原始安装文件进行重装修复。另一种升级方案中,在升级时并不会对软件原有版本的文件进行操作,而是直接部署一套新的版本,在重启时直接切换到该新的版本上。但是该方法中,不能避免升级过程中异常断电使文件损坏而导致的升级失败,并且大概率出现无法回滚到旧版本的情况。
综上,现有的软件升级方案中,会存在因异常断电时文件损坏而导致升级失败时也无法回滚的问题。
发明内容
有鉴于此,本申请提供一种软件升级方法及装置,用以解决软件升级过程中因异常断电造成文件损坏而导致升级失败后无法回滚的问题。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种软件升级方法,包括:
将目标软件的安装目录下的启动配置信息文件中的启动信息备份到所述安装目录下的启动配置信息备份文件中,以使得所述启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹;
在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号;
将所述升级包释放到所述新版本文件夹中;
在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级,其中,修改后的启动信息指向所述新版本文件夹。
根据本申请的第二方面,提供一种软件升级装置,包括:
备份模块,用于将目标软件的安装目录下的启动配置信息文件中的启动信息备份到所述安装目录下的启动配置信息备份文件中,以使得所述启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹;
创建模块,用于在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号;
释放模块,用于将所述升级包释放到所述新版本文件夹中;
修改模块,用于在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级,其中,修改后的启动信息指向所述新版本文件夹。
根据本申请的第三方面,提供一种电子设备,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本申请实施例第一方面所提供的方法。
根据本申请的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例第一方面所提供的方法。
本申请实施例的有益效果:
本申请实施例提供的软件升级方法及装置中,将目标软件的安装目录下的启动配置信息文件中的启动信息备份到安装目录下的启动配置信息备份文件中;在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号;将所述升级包释放到所述新版本文件夹中;在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级。由此一来,由于启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹,且修改后的启动信息指向所述新版本文件夹,这样,由于启动配置信息文件和启动配置信息备份文件中分别存储了新版本、旧版本的启动信息,且安装目录下即保留了旧版本的版本文件夹,也创建了新版本的新版本文件夹,因此,即使在发生异常断电,在升级失败后,也能基于启动配置信息备份文件和旧版本的版本文件夹启动旧版本的目标软件,即实现目标软件的回滚。此外,若升级过程中未发生异常断电,则就可以基于启动配置信息文件和新版本文件夹启动新版本的目标软件,也即完成了目标软件的升级。
附图说明
图1是本申请实施例提供的一种软件升级方法的流程示意图;
图2是本申请实施例提供的一种目标软件的安装目录下的各文件示意图;
图3是本申请实施例提供的一种启动配置信息文件的文件内容示意图;
图4是本申请实施例提供的一种软件升级处理时序示意图;
图5是本申请实施例提供的一种软件升级装置的结构示意图;
图6是本申请实施例提供的一种实施软件升级方法的电子设备的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面对本申请提供的软件升级方法进行详细地说明。
参见图1,图1是本申请提供的一种软件升级方法的流程图,该方法可以应用于电子设备中,该电子设备可以但不限于为支持Windows操作系统的设备,例如云屏设备、个人PC机等等。上述电子设备在实施该方法时,可包括如下所示步骤:
S101、将目标软件的安装目录下的启动配置信息文件中的启动信息备份到所述安装目录下的启动配置信息备份文件中,以使得所述启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹。
本步骤中,上述目标软件可以但不限于为电子设备中的任一软件,也可能应用。为了描述方便,以目标软件为例进行说明。实际应用中,在电子设备中安装目标软件时,会在本地为该目标软件存储支撑使用该目标软件的文件,相应会有一个安装目录以快速查找到使用该目标软件时所需的各文件。而为了支撑目标软件的启动,在目标软件的安装目录下会维护一个启动配置信息文件,该启动配置信息文件记录有启动该目标软件的启动信息,进而基于该启动信息就可以启动该目标软件的可执行文件,也就是说,在任何版本下,启动信息是启动目标软件的必要信息。
基于此,为了解决当前存在的软件升级过程中异常断电而导致升级失败甚至无法回滚到旧版本的问题,本实施例提出,在进行软件升级时,先在启动配置信息文件所在安装目录下创建一个启动配置信息备份文件,然后将启动配置信息文件中的启动信息备份到启动配置信息备份文件中;值得注意的是,若当前已存在该启动配置信息备份文件,则不执行创建步骤,直接执行将前述启动配置信息文件中的启动信息复制一份到启动配置信息备份文件中。这样,由于当前的启动配置信息文件中存储的是旧版本的目标软件的启动信息,因此,备份到启动配置信息备份文件中的启动信息即为上述旧版本的目标软件的启动信息,其能够指向升级之前旧版本对应的版本文件夹,由于该版本文件夹中包括旧版本的目标软件的可执行文件,因此,基于该启动信息就能够指向旧版本的目标软件的可执行文件。
此外,实际应用中,上述启动配置信息文件可以存储在目标软件的案子目录的根目录下。上述启动配置信息文件可以记为LaunchInfo.ini,而上述启动配置信息备份文件可以记为LaunchInfo_temp.ini。为了更好地理解本实施例,以如下示例为例进行说明,假设目标软件(目标应用)的安装目录为D:\App1文件夹,参考图2中左侧所示,该目标软件的实际可执行文件名为App1.exe,参考图2右侧所示。则在上述安装目录的根目录(D:\App1)下,并不存放实际的可执行文件,而是包含一个名为Entry.exe的可执行文件,一个LaunchInfo.ini文件的启动配置信息文件,以及一个或两个以版本号命名的文件夹,记为版本文件夹,也请参考图2左侧所示,而版本文件夹里包含实际的目标软件的可执行文件,也请参考图2右侧所示。则当进行APP1的软件升级时,就可以在D:\App1文件夹下创建一个LaunchInfo_temp.ini文件,然后将LaunchInfo.ini文件中记录的启动信息备份到LaunchInfo_temp.ini文件中。
此外,上述根目录下除了包括上述启动配置信息文件和启动配置信息备份文件外,还包括以目标软件当前所使用的版本的版本号命名的版本文件夹和一个命名为Entry.exe的可执行文件,该可执行文件并非目标软件的实际可执行文件,实际的可执行文件包含在上述版本文件夹中。
实际应用中,还以目标软件为APP1应用为例进行说明,当用户通过点击电子设备上的桌面快捷方式、开始菜单、任务栏锁定图标等方式启动软件时,操作系统实际会直接启动软件安装根目录下的Entry.exe程序。Entry.exe在启动后,会先读取LaunchInfo.ini文件中的启动信息,通过拼接版本号和可执行文件名的方式,就可以知道该软件的实际可执行文件(App1.exe)的绝对路径,然后再由Entry.exe通过此路径启动App1.exe,最终完成上述目标软件的启动。
S102、在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号。
本步骤中,由于可执行文件是存储在版本文件夹中,因此,当进行软件升级时,可以根据升级包所属版本的版本号在上按照目录下创建一个以该版本号命名的新版本文件夹,此时,以旧版本号命名的版本文件夹也并未删除。
值得注意的是,上述新版本文件夹所在位置可以与启动配置信息文件在安装目录中的位置相同,这样可以保证目标软件的快速启动。例如,在启动配置信息文件所在的安装目录的根路径下创建该新版本文件夹。
还以图2为例进行说明,若旧版本的版本号为1.0.0.0,则旧版本的版本文件夹的文件名为1.0.0.0,该版本文件夹中包括旧版本的目标软件的可执行文件,即图2右侧;若新版本的版本号为1.0.0.1,则在该安装目录下就可以创建为1.0.0.1为文件名的新版本的版本文件夹,即新版本文件夹,参考图2左侧所示。
S103、将所述升级包释放到所述新版本文件夹中。
本步骤中,为了保证目标软件的升级,可以将包含新版本的可执行文件的升级包释放到该新版本文件夹中,以便后续启动新版本的可执行文件。
S104、在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级,其中,修改后的启动信息指向所述新版本文件夹。
具体地,实际应用中,在对电子设备中的文件执行某操作产生的数据,往往需要先缓存到内存中,再写入磁盘。例如,Windows系统中,当执行完文件的复制、修改、保存等操作后,操作系统出于性能考虑并不会直接把数据写入到磁盘中,而是会短暂的缓存在内存里,并选择在一定的情况下将数据写入到磁盘中。在数据未写入磁盘之前,如果出现断电导致电子设备的异常关机,那么在内存中未及时写入磁盘的数据就会丢失。因此,如果软件升级过程中遇到断电而导致的电子设备的异常关机,那么就有很大概率导致软件升级失败,而且备份的原有数据和新写入的新数据都会因数据损坏而导致程序无法被回滚恢复。
有鉴于此,本申请会先执行内容的写入操作,如先执行上述步骤S101中启动信息的备份及步骤S103中升级包的释放过程。按照上述描述,这两个过程可能都需要先将要写入的内容缓存到内存中,然后再从内存中读取出,并写入磁盘中上述安装目录的对应文件夹内,例如,在将升级包释放到新版本文件夹时,会涉及向新版本文件夹写入数据的操作,先将升级包缓存到内存中,然后再写入磁盘中上述新版本文件夹中。因此,数据在写内存,读内存再写入磁盘时,会占用一定的时间,因此,为了保证前述内容成功写入磁盘,本实施例提出,可以设置一个等待时间,即上述设定时间。
可选地,该设定时间不低于将升级过程中需要写入的内容成功写入对应位置所需要的时间。例如,由于步骤S101和S103中涉及升级过程中对应内容缓存到内存中所需的第一时间,以及电子设备将内存中上述内容(执行步骤S101所需要写入内存的内容及执行步骤S103所需要写入内存的内容)写入到磁盘中安装目录之前所需等待的第二时间,以及,电子设备从内存中读取上述内容并写入磁盘对应位置处所需的第三时间。因此,需要保证上述设定时间不低于上述第一时间、第二时间与第三时间的和值。
实际应用中,上述设定时间可以根据经验或其他计算方式进行设定,例如,根据经验可以将设定时间设置为60s等等。或者,可以按照下述任一方法计算上述设定时间:通过大量模拟本申请提供的软件升级流程来评估第一时间、第二时间和第三时间的取值,然后基于评估的各时间取值确定上述设定时间。
或者,根据电子设备中操作系统向内存写入数据的写入速度及写入的内容的内容大小,计算第一时间;根据当前操作系统的处理速度和处理压力,评估操作系统从内存读取内容并写入磁盘之前所需要的第二时间;根据从内存中读取内容的读取速度、向磁盘写入内容的写入速度及写入内容的内容大小,计算上述第三时间。当然,还可以采用其他的评估方式,此处不再一一详细说明,旨在保证设定时间不低于将升级过程中需要写入的内容成功写入对应位置所需要的时间。
在此基础上,在等待上述设定时间后,表明新版本的升级包已成功写入到新版本文件夹中,只需修改启动配置信息文件中的启动信息,即,利用新版本的启动信息替换当前启动配置信息文件中的启动信息,从而就能够保证启动新版本的目标软件。
值得注意的是,上述启动信息可以包括版本号Version和当前版本号下目标软件的可执行文件的文件名,参考图3所示,其为修改之前启动配置信息文件中的启动信息,即版本号Version=1.0.0.1,ExeName=App1.exe。这样,修改后的启动配置信息文件中记录的版本号即为升级包对应的版本号,即新版本的版本号,相应地,启动配置信息文件中记录的可执行文件名称为升级包中的可执行文件的文件名,即新版本的可执行文件。由于可执行文件是存储在以版本号命名的版本文件夹中,这样,基于启动配置信息文件中的启动信息就能够准确地定位的新版本的可执行文件。同理,启动配置信息备份文件中记录的版本号即为升级之前的版本号,相应地,启动配置信息备份文件中记录的可执行文件名称为旧版本的可执行文件的文件名,而可执行文件是存储在以版本号命名的版本文件夹中,这样,基于启动配置信息备份文件中的启动信息就能够准确地定位的旧版本的可执行文件。
还以图3为例进行说明,则执行步骤S101之后,LaunchInfo_temp.ini文件中的启动信息的内容即为图3中的内容,则在执行步骤S104之后,若新版本的版本号为1.0.0.2,可执行文件的文件名依然为APP1.exe,则修改后的LaunchInfo.ini文件中的启动信息为:Version=1.0.0.2,ExeName=APP1.exe。
本申请实施例提供的软件升级方法中,将目标软件的安装目录下的启动配置信息文件中的启动信息备份到安装目录下的启动配置信息备份文件中;在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号;将所述升级包释放到所述新版本文件夹中;在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级。由此一来,由于启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹,且修改后的启动信息指向所述新版本文件夹,这样,由于启动配置信息文件和启动配置信息备份文件中分别存储了新版本、旧版本的启动信息,且安装目录下即保留了旧版本的版本文件夹,也创建了新版本的新版本文件夹,因此,即使在发生异常断电,在升级失败后,也能基于启动配置信息备份文件和旧版本的版本文件夹启动旧版本的目标软件,即实现目标软件的回滚。此外,若升级过程中未发生异常断电,则就可以基于启动配置信息文件和新版本文件夹启动新版本的目标软件,也即完成了目标软件的升级。
可选地,基于上述任一实施例,本实施例提供的软件升级方法,还可以包括下述过程:在升级完成后,若监测到用户正在使用旧版本的目标软件,则保持所述目标软件的运行状态不变;待所述用户关闭所述目标软件之后,监测到所述用户启动所述目标软件时,则基于修改后的所述启动配置信息文件中的启动信息,启动新版本的目标软件。
具体地,在升级完成之前不存在电子设备异常断电的情况下,通过执行图1所示的流程表明目标软件已经升级完成。一般情况下,若用户当前尚未使用该目标软件,则当用户在升级完成之后使用目标软件时,操作系统可以根据安装目录下的Entry.exe成功读取上述修改后的启动配置信息文件中的启动信息,进而基于该启动信息成功启动新版本的可执行文件,即启动新版本的目标软件;而若当前监测到用户正在使用旧版本的目标软件,则本实施例提出,为了保证用户使用目标软件的使用体验,不会直接关闭该目标软件,而是保持用户使用旧版本的目标软件的运行状态不变,即,让用户继续使用旧版本的目标软件。在监测到用户不再使用目标软件时,并再次使用该目标软件时,例如用户主动关闭目标软件后,又重新打开该目标软件,此时,操作系统就可以根据Entry.exe打开修改后的启动配置信息文件中的启动信息,进而基于该启动信息成功启动新版本的可执行文件,即启动新版本的目标软件,让用户操作新版本的目标软件。由此一来,既保证了用户继续使用旧版本的目标软件的使用体验,也实现了在无缝切换到新版本的目标软件时用户无感知的效果。
基于上述任一实施例,在执行步骤S104中修改所述启动配置信息文件中启动信息之前,本实施例中提供的软件升级方法,还可以包括如下过程:在发生断电之后,若在开机后,监测到用户使用所述目标软件时,则基于所述启动配置信息备份文件中的启动信息,启动旧版本的目标文件。
具体地,在修改上述启动配置信息文件中启动信息之前,即,在执行步骤S104之前,在成功执行步骤S101之后,即在磁盘的安装目录的根路径下启动配置信息备份文件中成功写入旧版本的目标软件的启动信息之后,若在此期间发生了异常断电,则由于启动配置信息备份文件此时已经成功记录了升级之前目标软件所使用的版本的启动信息,而且旧版本的版本文件夹也在安装目标的根路径下保留,因此,此时异常断电之后开机之后,用户点击该目标软件的图标以希望使用该目标软件时,操作系统在接收到指示后,就可以启动安装目录的根目录下的Entry.exe来读取启动信息,由于在异常断电时,一般情况下Entry.exe会先去启动配置信息文件读取启动信息,并校验启动信息的有效性,由于在升级过程中发生异常断电会导致启动配置信息文件损坏,即软件升级失败,故此时启动信息未校验通过,则认为读取该启动信息失败。
为了保证用户正常使用该目标软件,本实施例提出,此时Entry.exe会去从启动配置信息备份文件读取启动信息,此时该备份文件中记录的是旧版本的目标软件的启动信息,而该启动信息能够指向旧版本的目标软件的可执行文件,基于此,Entry.exe就可以基于读取到的启动信息成功的启动旧版本的目标软件,以供用户使用,从而实现了即使软件升级失败也能够回滚到旧版本的目标软件,保证用户正常使用旧版本的目标软件。
为了更好地理解本实施例,以图4所示的软件升级处理时序为例进行说明,图4中将本申请提供的软件升级流程划分了5个节点:节点1、备份启动信息完成,对应步骤S101;节点2、释放更新文件完成,对应步骤S103;节点3、等待60秒完成,对应步骤S104,该60s记为上述设定时间,其仅为示例;节点4、更新LaunchInfo.ini完成,对应步骤S104;节点5、新版本稳定运行。为了方便理解,可以将节点1与节点2之间定义为区间1,将节点2与节点3之间定义为区间2,节点3与节点4之间定义为区间4,节点5之后定义为区间5。
在此基础上,在节点4之前,升级的所有操作都是在增量的添加新的文件,并未涉及到对目标软件的版本文件和启动信息做修改。因此在节点4之前,也就是升级过程中的区间1、区间2、区间3中任一时刻出现断电异常,不会影响旧版本的目标软件的正常运行,即,在软件升级失败时能够回滚到旧版本的目标软件,保证用户正常使用旧版本的目标软件。
在此基础上,当软件升级失败之后,电子设备开机时,操作系统可以监测本地目标软件的版本是否是最新版本,如向服务器获取当前最新版本的版本号,若发现电子设备当前的目标软件不是最新版本,则会继续执行本申请任一实施例提供的软件升级方法。
可选地,基于上述任一实施例,本实施例中,还提出如下实施例:在修改所述启动配置信息文件中启动信息之后,在新版本的目标软件尚未稳定运行之前,若发生断电,则在开机之后,监测到用户使用所述目标软件时,则基于所述启动配置信息备份文件中的启动信息,启动旧版本的目标文件;在新版本的目标软件稳定运行之后,若发生断电,则在开机之后,监测到用户使用所述目标软件时,基于修改后的所述启动配置信息文件中的启动信息,启动新版本的目标软件。
具体地,在执行修改启动配置信息文件中的启动信息的步骤时,也会存在先将新版本的启动信息缓存至内存中,然后在一定情况下从内存中读取再写入磁盘的情况,因此,若在执行修改启动配置信息文件中的启动信息之后,发生断电异常时,则会存在如下两种情况:
情况一:当新版本的启动信息尚未成功写入磁盘时,则此时发生异常断电,则此时升级失败。在升级失败后,当开机后,用户若此时使用目标软件,由于启动配置信息备份文件记录升级之前的目标软件的启动信息,则Entry.exe就可以基于读取到的启动信息成功的启动旧版本的目标软件,以供用户使用,从而实现了即使软件升级失败也能够回滚到旧版本的目标软件,保证用户正常使用旧版本的目标软件。
情况二:当将新版本的启动信息成功写入磁盘中启动配置信息文件之后,此时尚不能认定升级成功,因为可能因存在异常断电而导致该启动配置信息文件损坏而导致的升级失败的情况,因此,本实施例提出可以设置一个监控时间,当启动配置信息文件中包括新版本的启动信息之后,可以开始计时,当计时时间未达到上述监控时间时,则确定新版本的目标软件尚未稳定运行,若期间发生异常断电导致电子设备关机,则会导致上述启动配置信息文件损坏,即Entry.exe无法从启用配置信息文件中读取出新版本的启动信息,但是当前旧版本的启动信息是记录在启动配置信息备份文件中的。待电子设备开机之后,此时检测到用户使用该目标软件,则为了保证用户能正常使用该目标软件,Entry.exe可以从该备份文件中读取到旧版本的启动信息,并基于读取到的启动信息成功的启动旧版本的目标软件,以供用户使用,从而实现了即使软件升级失败也能够回滚到旧版本的目标软件,保证用户正常使用旧版本的目标软件。
还以图4为例进行说明,在节点4之后,启动配置信息文件中的启动信息被修改,如果在区间4出现断电异常,则LaunchInfo.ini有概率出现文件损坏。但由于区间2等待了60秒,所以当升级流程执行到区间4时,节点1中备份的启动信息已经写入磁盘,即成功写入到启动配置信息备份文件中。当区间4出现断电异常后,LaunchInfo_temp.ini中的启动信息仍然是有效的,能够指向升级前的版本。因此在区间4中,如果Entry.exe读取LaunchInfo.ini中的启动信息失败时,Entry.exe仍然能够读取LaunchInfo_temp.ini中的启动信息以启动旧版本的目标软件,做到异常回滚。
在区间5时,无论是更新的版本文件(升级包)还是LaunchInfo.ini文件,都已经写入到磁盘,此时设备出现的任何异常都不会导致新版本软件的数据损坏。即,断电恢复开机之后,可以基于LaunchInfo.ini文件中的启动信息启动新版本的目标软件。
在此基础上,当软件升级失败之后,操作系统会继续可以监测本地目标软件的版本是否是最新版本,如向服务器获取当前最新版本的版本号,若发现电子设备当前的目标软件不是最新版本,则会继续执行本申请任一实施例提供的软件升级方法。
另外,若计时时间达到上述监控时间时,则此时可以确定新版本的目标软件已稳定运行,即,此时即使电子设备发生断电异常而导致电子设备关机,也不会导致启动配置信息文件的损坏,因此,在该情况下,在电子设备开机之后,Entry.exe可以从该文件中读取出新版本的启动信息,并基于该启动信息从新版本文件夹中找到新版本的目标软件的可执行文件,并成功启动新版本的目标软件,从而既完成了目标软件的升级,也保证了用户使用新版本的目标软件。
值得注意的是,上述监控时间可以根据实际情况进行配置,如一周、半个月等等。实际应用中,可以根据实际情况进行配置。
进一步地,基于上述任一实施例,本实施例中提供的软件升级方法,还可以包括:遍历所述安装目录下存储的各版本文件夹;若目标版本文件夹对应的版本号与当前的启动配置信息文件中的启动配置信息所指示的版本号、当前的启动配置信息备份文件中的启动信息所指示的版本号均不同,删除所述目标版本文件夹。
实际应用中,目标软件在执行上述升级流程之后,可能存在尚未达到允许稳定状态之前,出现再次升级的场景,这样就需要再次执行上述实施例提供的软件升级流程,从而可能就会导致目标软件的安装目录下存在不止两个版本的版本文件夹。例如,在短时间内目标软件从1.0.0.0版本升级到1.0.0.1版本,然后升级到1.0.0.2版本后,若按照本申请任一实施例提供的软件升级方法升级目标软件时,目标软件的安装目录的根目录下会存在3个版本文件夹,但是启动配置信息文件中记录的是1.0.0.2版本的启动信息,启动配置信息备份文件中记录的是1.0.0.1版本的启动信息,表明在该情况下,最早版本---1.0.0.0对应的版本文件夹其实已经没有用了,因此,为了节省存储空间,本实施例提出了上述处理过程,通过执行上述处理过程,就可以删除掉1.0.0.0对应的版本文件夹及文件夹中的内容,从而达到了节省存储空间的目的。
值得注意的是,该实施例的执行可以在软件升级之前或软件升级成功之后执行,旨在不误删除所需要的版本文件夹。
基于上述任一实施例,本实施例提供的软件升级方法,还可以包括如下流程:在新版本的目标软件的运行状态达到稳定状态时,则删除所述启动配置信息备份文件中的启动信息所指示的版本文件夹;删除所述启动配置信息备份文件。
具体地,为了更进一步节省存储空间,当上述计时时间到达监控时间后,表明新版本的目标软件达到稳定运行状态时,则表明当前旧版本的版本文件夹就没有用了,相应地,包含旧版本的启动信息的启动配置信息备份文件也就没有用了,因此,本实施例可以对其进行删除处理。
至此,通过提供本申请任一实施例提供的软件升级方法,实现了在升级时即使出现异常断电导致相关文件被损坏等情况时仍能保证软件能够正常运行。而且,本方案具有很高的容错性。另外,本申请提供的方案具有静默升级的能力,可以在使用在正在使用软件时能够无感的升级到新版本。
基于同一发明构思,本申请还提供了与上述软件升级方法对应的软件升级装置。该软件升级装置的实施具体可以参考上述对软件升级方法的描述,此处不再一一论述。
参见图5,图5是本申请一示例性实施例提供的一种软件升级装置,包括:
备份模块501,用于将目标软件的安装目录下的启动配置信息文件中的启动信息备份到所述安装目录下的启动配置信息备份文件中,以使得所述启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹;
创建模块502,用于在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号;
释放模块503,用于将所述升级包释放到所述新版本文件夹中;
修改模块504,用于在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级,其中,修改后的启动信息指向所述新版本文件夹。
可选地,基于上述实施例,本实施例提供的软件升级装置,还可以包括:
保持模块(图中未示出),用于在升级完成后,若监测到用户正在使用旧版本的目标软件,则保持所述目标软件的运行状态不变;
第一启动模块(图中未示出),用于待所述用户关闭所述目标软件之后,监测到所述用户启动所述目标软件时,则基于修改后的所述启动配置信息文件中的启动信息,启动新版本的目标软件。
可选地,基于上述任一实施例,本实施例中提供的软件升级装置,还可以包括:
第二启动模块(图中未示出),用于在所述修改模块504修改所述启动配置信息文件中启动信息之前,在发生断电之后,若在开机后,监测到用户使用所述目标软件时,则基于所述启动配置信息备份文件中的启动信息,启动旧版本的目标文件。
可选地,基于上述任一实施例,本实施例中提供的软件升级装置,还可以包括:
第三启动模块(图中未示出),用于在所述修改模块504修改所述启动配置信息文件中启动信息之后,在新版本的目标软件尚未稳定运行之前,若发生断电,则在开机之后,监测到用户使用所述目标软件时,则基于所述启动配置信息备份文件中的启动信息,启动旧版本的目标文件;在新版本的目标软件稳定运行之后,若发生断电,则在开机之后,监测到用户使用所述目标软件时,基于修改后的所述启动配置信息文件中的启动信息,启动新版本的目标软件。
值得注意的是,上述第一启动模块、第二启动模块和第三启动模块可以属于同一个启动模块,也可以为不同的模块,具体可以根据实际情况进行配置。
可选地,基于上述任一实施例,本实施例中,所述设定时间不低于将升级过程中需要写入的内容成功写入对应位置所需要的时间。
可选地,基于上述任一实施例,本实施例中提供的软件升级装置,还可以包括:
遍历模块(图中未示出),用于遍历所述安装目录下存储的各版本文件夹;
第一删除模块(图中未示出),用于若目标版本文件夹对应的版本号与当前的启动配置信息文件中的启动配置信息所指示的版本号、当前的启动配置信息备份文件中的启动信息所指示的版本号均不同,删除所述目标版本文件夹。
可选地,基于上述任一实施例,本实施例中提供的软件升级装置,还可以包括:
第二删除模块(图中未示出),用于在新版本的目标软件的运行状态达到稳定状态时,则删除所述启动配置信息备份文件中的启动信息所指示的版本文件夹;删除所述启动配置信息备份文件。
基于同一发明构思,本申请实施例提供了一种电子设备,如图6所示,包括处理器601和机器可读存储介质602,机器可读存储介质602存储有能够被处理器601执行的计算机程序,处理器601被计算机程序促使执行本申请任一实施例所提供的软件升级方法。此外,该电子设备还包括通信接口603和通信总线604,其中,处理器601,通信接口603,机器可读存储介质602通过通信总线604完成相互间的通信。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
上述机器可读存储介质602可以为存储器,该存储器可以包括随机存取存储器(Random Access Memory,RAM)、DDR SRAM(Double Data Rate Synchronous DynamicRandom Access Memory,双倍速率同步动态随机存储器),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
对于电子设备以及机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
上述装置中各个单元/模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元/模块可以是或者也可以不是物理上分开的,作为单元/模块显示的部件可以是或者也可以不是物理单元/模块,即可以位于一个地方,或者也可以分布到多个网络单元/模块上。可以根据实际的需要选择其中的部分或者全部单元/模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种软件升级方法,其特征在于,包括:
将目标软件的安装目录下的启动配置信息文件中的启动信息备份到所述安装目录下的启动配置信息备份文件中,以使得所述启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹;
在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号;
将所述升级包释放到所述新版本文件夹中;
在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级,其中,修改后的启动信息指向所述新版本文件夹。
2.根据权利要求1所述的方法,其特征在于,还包括:
在升级完成后,若监测到用户正在使用旧版本的目标软件,则保持所述目标软件的运行状态不变;
待所述用户关闭所述目标软件之后,监测到所述用户启动所述目标软件时,则基于修改后的所述启动配置信息文件中的启动信息,启动新版本的目标软件。
3.根据权利要求1所述的方法,其特征在于,在修改所述启动配置信息文件中启动信息之前,所述方法,还包括:
在发生断电之后,若在开机后,监测到用户使用所述目标软件时,则基于所述启动配置信息备份文件中的启动信息,启动旧版本的目标文件。
4.根据权利要求1所述的方法,其特征在于,在修改所述启动配置信息文件中启动信息之后,所述方法,还包括:
在新版本的目标软件尚未稳定运行之前,若发生断电,则在开机之后,监测到用户使用所述目标软件时,则基于所述启动配置信息备份文件中的启动信息,启动旧版本的目标文件;
在新版本的目标软件稳定运行之后,若发生断电,则在开机之后,监测到用户使用所述目标软件时,基于修改后的所述启动配置信息文件中的启动信息,启动新版本的目标软件。
5.根据权利要求1所述的方法,其特征在于,所述设定时间不低于将升级过程中需要写入的内容成功写入对应位置所需要的时间。
6.根据权利要求1所述的方法,其特征在于,还包括:
遍历所述安装目录下存储的各版本文件夹;
若目标版本文件夹对应的版本号与当前的启动配置信息文件中的启动配置信息所指示的版本号、当前的启动配置信息备份文件中的启动信息所指示的版本号均不同,删除所述目标版本文件夹。
7.根据权利要求1所述的方法,其特征在于,还包括:
在新版本的目标软件的运行状态达到稳定状态时,则删除所述启动配置信息备份文件中的启动信息所指示的版本文件夹;
删除所述启动配置信息备份文件。
8.一种软件升级装置,其特征在于,包括:
备份模块,用于将目标软件的安装目录下的启动配置信息文件中的启动信息备份到所述安装目录下的启动配置信息备份文件中,以使得所述启动配置信息备份文件中的启动信息指向升级之前所述目标文件所使用的版本对应的版本文件夹;
创建模块,用于在所述安装目录下创建新版本文件夹,所述新版本文件夹的文件名为升级包对应的版本号;
释放模块,用于将所述升级包释放到所述新版本文件夹中;
修改模块,用于在等待设定时间后,修改所述启动配置信息文件中启动信息,以完成目标软件的升级,其中,修改后的启动信息指向所述新版本文件夹。
9.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的计算机程序,所述处理器被所述计算机程序促使执行权利要求1~7任一项所述的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有计算机程序,在被处理器调用和执行时,所述计算机程序促使所述处理器执行权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311385934.7A CN117519745A (zh) | 2023-10-24 | 2023-10-24 | 一种软件升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311385934.7A CN117519745A (zh) | 2023-10-24 | 2023-10-24 | 一种软件升级方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117519745A true CN117519745A (zh) | 2024-02-06 |
Family
ID=89750371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311385934.7A Pending CN117519745A (zh) | 2023-10-24 | 2023-10-24 | 一种软件升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117519745A (zh) |
-
2023
- 2023-10-24 CN CN202311385934.7A patent/CN117519745A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107844386B (zh) | 一种数据备份、恢复方法及装置 | |
US8286154B2 (en) | Apparatus and method for live loading of version upgrades in a process control environment | |
JP4363676B2 (ja) | コンピュータシステム | |
TWI839587B (zh) | 用於管理軟體更新之方法及裝置,以及非暫時性電腦可讀儲存媒體 | |
CN102334100A (zh) | 程序更新设备、程序更新方法以及信息处理设备 | |
US20080263350A1 (en) | Update in-use flash memory without external interfaces | |
US9665496B2 (en) | Non-volatile memory write mechanism | |
US11221927B2 (en) | Method for the implementation of a high performance, high resiliency and high availability dual controller storage system | |
JP5183542B2 (ja) | 計算機システム及び設定管理方法 | |
CN103345411A (zh) | 卸载应用程序的方法及装置 | |
CN113032032A (zh) | 一种系统管理方法、装置、计算设备及可读存储介质 | |
CN104572354A (zh) | 基于恢复服务的操作系统备份和恢复的方法及其设备 | |
CN111651304B (zh) | 基于双芯智能电表的软件恢复方法、装置和计算机设备 | |
CN101196839A (zh) | 双快闪只读存储器的数据修复与同步方法 | |
CN113032183A (zh) | 系统管理方法、装置、计算机设备和存储介质 | |
US8677088B1 (en) | Systems and methods for recovering primary sites after failovers to remote secondary sites | |
US11226875B2 (en) | System halt event recovery | |
CN117519745A (zh) | 一种软件升级方法及装置 | |
CN107797885B (zh) | 电子设备及其控制方法 | |
KR100775887B1 (ko) | 임베디드시스템에서 하드디스크를 이용한 운영체계 로딩 및업데이트 방법 | |
JP6149624B2 (ja) | ファームウェア実行装置、ファームウェア実行方法、コンピュータ・プログラム、および、コンピュータ装置 | |
CN117519810B (zh) | 磁盘分区的处理方法、装置、电子设备和介质 | |
JPWO2014147707A1 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP4838226B2 (ja) | ネットワークロギング処理プログラム,情報処理システムおよびネットワークロギング情報自動退避方法 | |
CN111106947B (zh) | 一种节点宕机修复方法、装置、电子设备及可读存储介质 |
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 |