CN115658119B - 一种根据软件版本迁移配置数据的方法 - Google Patents
一种根据软件版本迁移配置数据的方法 Download PDFInfo
- Publication number
- CN115658119B CN115658119B CN202211670447.0A CN202211670447A CN115658119B CN 115658119 B CN115658119 B CN 115658119B CN 202211670447 A CN202211670447 A CN 202211670447A CN 115658119 B CN115658119 B CN 115658119B
- Authority
- CN
- China
- Prior art keywords
- version
- configuration
- user
- configuration file
- parameters
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种根据软件版本迁移配置数据的方法,包括初始化、参数设置、设计构造函数、实例方法调用等步骤,通过设计一种对软件配置的封装,逻辑代码不直接访问配置文件,而是依靠封装暴露的方法安全地从配置文件中取值,无需考虑目标是否存在,由封装内部处理软件升级带来的数据结构兼容性问题。本方法能够集中处理软件升级造成的配置兼容问题,杜绝繁琐冗余,便于软件维护,提高研发、运营团队项目实施效率。
Description
技术领域
本专利申请属于迁移配置数据技术领域,更具体地说,是涉及一种根据软件版本迁移配置数据的方法。
背景技术
在开发桌面端(Windows、macOS、Linux)软件时,通常需要维护一个用于存放用户配置的文件,此文件不包含在软件主体内,通常存放在每个用户的应用程序数据目录(在Windows 系统中通常为 %APPDATA% 文件夹附加应用的名称;在 Linux 系统中通常为 $XDG_CONFIG_HOME 或者 ~/.config 文件夹附加应用的名称;在 macOS 系统中通常为 ~/Library/Application Support 文件夹附加应用的名称)。此文件在程序第一次打开时做初始化处理,将软件设置的默认值写入其中。这样做的好处是在支持多用户切换的系统环境中,不同用户使用同一个软件时分别加载各自的配置进行个性化设置,也方便在重新安装软件后恢复之前的设置。
这个方式在软件的升级过程中不可避免地遇到数据兼容性问题,下面列举两个例子。
情景模拟 1:
现有一款软件,已经具备上述记录用户个性化配置的功能且运行良好,暂称为v1.0.0 版本。
现升级新版本 v1.1.0,增加了“再次打开软件时自动恢复上次关闭前窗口大小和位置”的功能,实现此功能需要在配置文件中存在 windowHeight(窗口高度)、windowWidth(窗口宽度)、windowPosition(窗口位置) 字段用于记录上次运行软件时的信息。但是由于此功能在新版本v1.0.0 中并不具备,用户的配置文件中也不存在这些字段,所以在读取这些配置时就要首先做是否存在的判断,即首先尝试从配置文件中取此字段的值,如果存在,则使用此值进行后续步骤;如果不存在,则在配置文件中新增此字段,并赋默认值,然后使用默认值进行后续步骤。
情景模拟 2:
现有一款软件,已经具备上述记录用户个性化配置的功能且运行良好,暂称为v1.0.0 版本。
现升级新版本 v1.1.0,支持用户自由配置界面背景颜色,使用theme.backgroundColor 字段在配置文件中存储。但是由于此功能在 v1.0.0 中并不具备,用户的配置文件中不存在 theme 字段,在代码中直接读取 theme.backgroundColor会抛出异常导致程序中断(将得到一个 Cannot read property 'backgroundColor' ofundefined 错误)。所以需要在需要读取此配置之前首先判断配置文件中是否存在 theme字段,如果存在则继续尝试读取 theme.backgroundColor,使用此值进行后续步骤;如果不存在,则在配置文件中新增此字段,并赋默认值,然后使用默认值进行后续步骤。
在升级软件版本时如果涉及配置文件结构的变化,需要在使用时首先处理结构兼容性问题,防止由于读取旧版本配置文件缺少必要字段导致程序抛出异常。这些兼容性代码分散在整个代码工程的各个位置并且需要长久保留,因为不能确定用户是从多早的版本升级而来,随着软件的不断迭代升级,久而久之这些处理数据兼容性的代码导致工程繁琐冗余,非常不便于维护。
发明内容
本发明需要解决的技术问题是提供一种根据软件版本迁移配置数据的方法,集中处理软件升级造成的配置兼容问题,杜绝繁琐冗余,便于软件维护,提高团队实施效率。
为了解决上述问题,本发明所采用的技术方案是:设计一种对软件配置的封装,逻辑代码不直接访问配置文件,而是依靠封装暴露的方法安全地从配置中取值,无需考虑目标是否存在,由封装内部处理软件升级带来的数据结构兼容性问题。封装是指隐藏对象的属性和实现细节,仅仅对外公开接口,将其接口与实现清晰的隔离开,系统之间只通过接口进行通信。
具体的,一种根据软件版本迁移配置数据的方法,包括如下步骤:
S1、初始化:定义一个配置文件的读写工具类,上述读写工具类作为软件封装的载体;
S2、参数设置:为所述读写工具类的构造函数设置参数,设置的参数包括default参数、version参数和versions参数,
S21、default参数,默认的基础配置数据;
S22、version参数,标识当前配置文件的版本,若设置version参数,以version参数的参数值为准;若不设置此参数默认使用软件代码工程中或项目根目录下的package.json内的 version 字段的字段值;
S23、versions参数,包括多个version参数,处理执行不同版本的配置文件的配置差异;
S3、设计构造函数:所述构造函数用于对读写工具类进行实例化,所述构造函数用于实现如下功能,
S31、取得配置文件位置:获取当前运行环境下,用户的配置文件的目录,从上述目录中取得项目信息和项目版本;用户的配置文件的目录中包括根目录的基础内容以及用户的个性化设置;
S32、计算当前版本(也就是计算当前用户的配置文件的版本):判断是否存在version 参数,如果存在,使用 version 参数作为当前版本,反之则使用项目版本作为当前版本;
S33、设置默认值:判断在用户的配置文件的目录下是否存在用户的配置文件,如果存在,读取用户的配置文件至缓存作为默认值;如果不存在,将 default参数作为默认值,并标记为 0.0.0 版本,含义为最初的版本;
S34、解析排序versions参数:获取用户的配置文件中的versions参数,对versions参数的版本进行排序;
S35、数据处理:按版本顺序处理用户的配置数据,利用各版本数据变更方法,将用户的配置数据迁移到当前版本;
S36、存储:完成配置数据的处理后,将处理得到的新数据进行保存,以供实例方法调用;
S4、实例方法调用:实例化读写工具类,生成实例化对象。
本发明技术方案的进一步改进在于:步骤S1中,读写工具类为Config类。
本发明技术方案的进一步改进在于:步骤S31中,使用 app.getPath('userData')获取当前运行环境下用户的配置文件的目录。
本发明技术方案的进一步改进在于:步骤S31中,项目版本通过目录下的 version字段得到。
本发明技术方案的进一步改进在于:步骤S35中,按版本从小到大的顺序处理用户的配置数据。
本发明技术方案的进一步改进在于:步骤S36中,完成配置数据的处理后,将处理得到的新数据分两步进行存储,首先保存至用户的配置文件中,再保存到缓存中。
本发明技术方案的进一步改进在于:步骤S4中,实例化读写工具类(Config 类)的用到的实例方法包括get方法和/或set方法:
get方法:从缓存中取值,参数为用户的配置文件中配置项的位置;
set方法:更新用户的配置文件中的值,通过获取用户的配置文件中配置项的位置,在相应位置为其赋新值,此方法可以在更新完缓存内的值之后继续更新用户的配置文件中对应的项目。
本发明技术方案的进一步改进在于:get方法和set/或方法中,支持使用“.连接”的方式操作
由于采用了上述技术方案,本发明取得的有益效果是:
1.本发明能够统一处理不同软件版本的配置,保证配置文件为最新版本的数据格式,无需在逻辑代码中反复进行非空判断。在需要访问配置时安全快速地从缓存读取。同时代码简洁高效,易于维护开发。
2.本发明于软件工程内部在不同的软件版本之间如何升级用户本地的配置文件结构。
3.由于原始的读取文件步骤繁琐且文件读取较慢,此方法将配置文件的读取在内部初始化过程中完成,避免每次使用时手动导入配置文件源码和解析,提高团队实施效率。
4.使用预先配置不同版本对配置文件格式的要求,结合版本号排序,自动将旧的配置文件数据迁移为新版本的数据格式,使用时无需再次判断取到的值是否存在。
5.在取值和赋值方法中支持对嵌套对象的路径调用写法,即下文演示的theme.backgroundColor 写法即可访问 theme 对象下的 backgroundColor 数据。
6.赋值操作后自动更新数据到配置文件,无需自己文件操作更新文件。统一处理不同软件版本的配置,保证配置文件为最新版本的数据格式,无需在逻辑代码中反复进行非空判断。在需要访问配置时安全快速地从缓存读取。
附图说明
图1为本发明的流程图。
具体实施方式
本发明的总体思路是:设计一种对软件配置的封装,逻辑代码不直接访问配置文件,而是依靠封装暴露的方法安全地从配置文件中取值,无需考虑目标是否存在,由封装内部处理软件升级带来的数据结构兼容性问题。关于封装,封装是指隐藏对象的属性和实现细节,仅仅对外公开接口,将其接口与实现清晰的隔离开,系统之间只通过接口进行通信。
本发明实现的前提条件是:软件可以将所需的配置项使用 JSON描述并存储。JSON是一种轻量级的数据交换格式,使用完全独立于编程语言的文本格式来存储和表示数据。
一种根据软件版本迁移配置数据的方法,包括如下步骤:
S1、初始化:定义一个配置文件的读写工具类,上述读写工具类作为软件封装的载体。在这里,定义名为Config的读写工具类。
S2、参数设置:为所述读写工具类的构造函数设置参数,设置的Config类的构造函数中,设置的参数包括default参数、version参数和versions参数,
S21、default参数,默认的基础配置数据;
default参数含义:默认配置数据
通过此default参数设置最基础的配置内容,可以认为设置的数据就是软件第一个版本需要的配置数据。默认为空对象,即没有任何默认配置。示例:
此示例最终保存到 config.json 中的内容如下:
上述代码中,version 字段用于标识当前配置文件的版本号,data 字段用于记录真实的配置信息。
S22、version参数,用于标识配置文件的当前版本,若设置version参数,以version参数的参数值为准;若不设置此参数默认使用软件代码工程中(也叫项目)根目录下的package.json内的 version 字段的字段值;
通过此version参数传递当前软件的当前版本,不设置此参数默认使用软件代码工程中 package.json内的 version 字段,package.json是项目的清单, 它可以做很多完全互不相关的事情, 例如,它是用于工具的配置中心, 它也是 npm 和 yarn 存储所有已安装软件包的名称和版本的地方。如果使用此version参数指定了版本,则以version中的参数值为准。示例:
S23、versions参数,包括多个version参数,处理执行不同版本的配置文件的配置差异;
versions参数含义:配置不同/多个版本应进行哪些数据处理。字面意思也可以理解,其是单词 version(版本)的复数。
此versions参数为最主要的参数,它描述了应该如何处理不同版本之间的配置差异。其传入的值是一个对象,对象的每个 key 为版本号,对应的 value 为回调函数,函数接收当上个版本的配置对象,在函数内进行数据修正过程。示例:
这里展示的是一个示例,意思是可以在此位置进行任何想进行的数据增加修改和删除,契合下文中将要提到的各版本数据变更方法。
示例中的代码可以这样理解:
在1.1.0版本中,软件取消了对用户昵称的展示,所以不再需要在配置文件内保存nickName 这个字段,在 1.1.0 版本对应的操作函数内就可以将其 delete 掉。
windowHeight 和 windowWidth 和 windowPosition 这三个操作可以情景带入文档的第一部分内容:技术问题和技术难点中的第一个情景模拟(即,这几行代码就是对情景模拟1中问题的解答),设置的几个值(600,800,数组[100, 100] )理解为这些字段的默认值,即默认窗口高度为 600 像素,默认窗口宽度为 800 像素,默认窗口位置的坐标为距离屏幕上边缘 100 像素,距离屏幕左边缘为 100 像素,这些数值是为程序内其它的逻辑代码准备的,在软件代码的其它位置会有对应的代码需要取这些值并使用。
S3、设计构造函数:所述构造函数用于对读写工具类进行实例化,在这里,实例是一个专业名词,将类实例化后得到的对象可以叫这个类的实例。参考文章:https://blog.csdn.net/weixin_36320950/article/details/121403779。
所述构造函数在程序开始后,实现如下功能:
S31、取得配置文件位置:获取当前运行环境下用户的配置文件的目录,用户的配置文件的目录中包括根目录的基础内容以及用户的个性化设置,从上述目录中取得项目信息和项目版本,比如使用 app.getPath('userData')获取当前运行环境下,用户的配置文件的目录,从上述目录下的 config.json作为数据的存放位置,使用
获取当前项目的 package.json 内容,从而取得项目信息和项目版本。
S32、计算当前版本(也就是计算当前用户的配置文件的版本):判断是否存在version 参数,如果存在或指定了version 参数,使用 version 参数作为当前版本,也就是令当前版本=version;反之则使用项目版本中package.json 内容作为当前版本,也就是令当前版本=项目版本。
S33、设置默认值:根据配置文件位置,判断该位置是否存在配置文件,也就是判断在用户的配置文件的目录下是否存在用户的配置文件,如果存在,读取用户的配置文件至缓存作为默认值;如果不存在,缓存中写入默认值,也就是将 default参数作为默认值,并标记为 0.0.0 版本,含义为最初的版本。
S34、解析排序versions参数:获取用户的配置文件中用于表征版本号的versions参数,对versions参数的版本进行解析排序。
由于对象的键是无序的,并且考虑用户设置 versions 参数时没有按照版本顺序设置,所以需要有对 versions 参数的解析和排序步骤,可以按版本号从小到大排序。例如用户设置的 versions 参数为:
在这一步将处理为:
S35、数据处理:按版本顺序处理用户的配置数据,利用各版本数据变更方法,将用户的配置数据迁移到当前版本;“数据处理”的结果是“配置数据迁移到当前版本”,可以认为,通过“数据处理”把“配置数据迁移到当前版本”。
关于“配置数据迁移到当前版本”,可以结合下文进行理解。
比如某软件至今发布了三个版本,由于功能变化,需要记录在本地的数据格式有如下变化:
版本 1.0.0 的本地数据
{
nickName: '用户名A'
}
基于版本 1.0.0,由于新增了主题设置功能,遂有了版本 1.1.0 的背景颜色和文字颜色设置,用于保存用户自定义设置,在下次打开软件时恢复用户的设置。
版本 1.1.0 的本地数据
{
nickName: '用户名A'
theme: {
backgroundColor: ‘#CCC’,
textColor: '#333'
}
}
基于版本 1.1.0,由于不再显示用户名称,所以去掉了保存用户名的字段,增加了记录上次关闭软件时窗口大小功能, 所以又增加了两个记录窗口信息的字段,如版本1.2.0所示。
版本 1.2.0 的本地数据
{
windowHeight: 600,
windowWidth: 800,
theme: {
backgroundColor: '#999',
textColor: ‘#000'
}
}
如果一个用户安装了版本 1.0.0,又升级到版本 1.1.0,又升级到版本 1.2.0,那么版本 1.2.0的数据格式就是当前版本,当前指的是现在所安装的,由于每个版本所需的数据格式变化,所以需要数据处理进行配置数据的变更。
结合当前配置文件中标记的配置文件版本和第二步得出的当前版本和第三步整理后的处理步骤,比如按版本号从小到大的顺序处理配置数据。这句话可以结合代码来展示,比如某个版本时用户本地的配置文件是“version”:“0.0.0”,结合步骤S22及下面的代码“version”:“1.0.0”部分,以及步骤S34和下面的代码version:“1.0.0”、version:“1.1.0”部分实现的。
各版本数据变更方法是开发者自己设置的,可以随便在本方法内操作数据,如上文代码中提到了1.1.0版本配置数据的变更、1.2.0 版本配置数据的变更部分。
S36、存储:完成配置数据的处理后,将处理得到的新数据进行保存,新数据依次保存至配置文件、缓存,以供实例方法调用。在保存过程中,将处理得到的新数据分两步进行存储,首先将计算后的配置信息通过文件系统接口保存至用户的配置文件中,用户的配置文件保存成功后再将结果存储到 Config 内部一份,也就是保存到缓存中,供实例方法调用,只有在实例方法进行修改或者删除操作时才更新本地配置文件。
S4、实例方法调用:实例化读写工具类,生成实例化对象。
具体的,实例化读写工具类Config 类用到的实例方法包括get方法和/或set方法:
get方法:从实例内保存的配置文件的缓存中取值,参数为配置项的位置;支持使用 . 连接的方式。示例
set方法:此方法更新用户的配置文件中的值,通过获取配置项的位置,在相应位置为其赋新值,第一个参数为配置项的位置,支持使用 . 连接的方式;第二个参数为需要设置的新值。示例:
此set方法可以在更新完缓存内的值之后继续更新用户的配置文件中对应的项目。
在这里,“. 连接”可以理解为是一种表示方法,比如,“小明的汽车的轮胎上的螺丝”对应到这种表示方法上可以写成“小明.汽车.轮胎.螺丝”
这种方式可以简洁高效地表示一个对象上的属性。
比如现有一个 JavaScript 中的对象:
obj = {
aaa: {
bbb: {
ccc: 'hello'
}
}
}
用 obj.aaa.bbb.ccc 就可以取到 hello 这个值(这是编程语言原生支持的功能)。文中介绍的 config.get('theme.windowHeight') 这种使用字符串描述数据存放路径的方式不是编程语言原生具有的,是可以通过编写函数方法自己解析这种使用点分隔的路径去对象上取值的,这样一是为了使用方便,二是可以在函数内部处理错误(比如尝试取aaa.bbb.ccc 但是实际上 aaa 下面并没有 bbb 这个字段,这时候就会报错)不需要重复写判断逻辑。
直至程序结束。
通过上述步骤可知,本发明优化了统一处理不同软件版本的配置,保证配置文件为最新版本的数据格式,无需在逻辑代码中反复进行非空判断。在需要访问配置时安全快速地从缓存读取。
下面进行示例对比,比较后可以看出本发明中新代码的简洁高效。
不使用此封装的代码示例
以下伪代码演示了常规使用方式
使用后代码示例
以下伪代码演示了此包装后的使用方式
本发明可以应用于养鸡场,用下面的案例简单说明一下。
案例1:发布新版本时,前端实现强制用户登出
不局限在某个系统上,有些系统进行了用户系统的改造,加入用户一段时间强制修改密码的规则,需要在新版本发布后强制所有的客户端下线,让用户重新登录。这个功能就是利用本发明所描述的方案实现的,即:在最新版本的数据处理函数中,清空本地用户的登陆状态,达到强制用户重新登录的目的。
案例2:移除无用的界面设置数据
在生产采集系统和育种系统中,由于操作人员的屏幕尺寸有限,又需要更大的显示面积用于大规模表单,所以在早期时,系统设计成侧边栏菜单可以用户自己拖拽调整宽度的形式。用户调整的侧边栏菜单数据保存在本地,实现记忆功能。之后由于设计方案变化,侧边栏菜单改为“展开—折叠”的形式,不再允许用户调整宽度。在这次版本更新时,利用当前版本配置的数据处理函数,在函数内删除之前用户本地保存的侧边栏宽度信息,并加入代表“侧边栏是否折叠”的新配置项。 另外,在界面主题功能加入和移除的两个节点都使用了此技术,方便地实现了对用户本地数据的管理。
Claims (8)
1.一种根据软件版本迁移配置数据的方法,其特征在于,包括如下步骤:
S1、初始化:定义一个配置文件的读写工具类,所述读写工具类作为软件封装的载体;
S2、参数设置:为所述读写工具类的构造函数设置参数,设置的参数包括default参数、version参数和versions参数,
S21、default参数,默认的基础配置数据;
S22、version参数,标识当前配置文件的版本,若设置version参数,以version参数的参数值为准;若不设置此参数默认使用根目录下version字段的字段值;
S23、versions参数,包括多个version参数,处理执行不同版本的配置文件的配置差异,其传入的值是一个对象,对象的每个key为版本号,对应的value为回调函数,函数接收上个版本的配置对象,在函数内进行数据修正过程;
S3、设计构造函数:所述构造函数用于对读写工具类进行实例化,所述构造函数用于实现如下功能,
S31、取得配置文件位置:获取当前运行环境下,用户的配置文件的目录,从所述目录中取得项目信息和项目版本;
S32、计算当前版本:判断是否存在version参数,如果存在,使用version参数作为当前版本,反之则使用项目版本作为当前版本;
S33、设置默认值:判断在用户的配置文件的目录下是否存在用户的配置文件,如果存在,读取用户的配置文件至缓存作为默认值;如果不存在,将default参数作为默认值,并标记为最初的版本;
S34、解析排序versions参数:获取用户的配置文件中的versions参数,对versions参数的版本进行排序;
S35、数据处理:按版本顺序处理用户的配置数据,将用户的配置数据迁移到当前版本;
S36、存储:完成配置数据的处理后,将处理得到的新数据进行保存,以供实例方法调用;
S4、实例方法调用:实例化读写工具类,生成实例化对象。
2.根据权利要求1所述的一种根据软件版本迁移配置数据的方法,其特征在于,步骤S1中,读写工具类为Config类。
3.根据权利要求1所述的一种根据软件版本迁移配置数据的方法,其特征在于,步骤S31中,使用app.getPath('userData')获取当前运行环境下用户的配置文件的目录。
4.根据权利要求1所述的一种根据软件版本迁移配置数据的方法,其特征在于,步骤S31中,项目版本通过目录下的version字段得到。
5.根据权利要求1所述的一种根据软件版本迁移配置数据的方法,其特征在于,步骤S35中,按版本从小到大的顺序处理用户的配置数据。
6.根据权利要求1所述的一种根据软件版本迁移配置数据的方法,其特征在于,步骤S36中,完成配置数据的处理后,将处理得到的新数据分两步进行存储,首先保存至用户的配置文件中,再保存到缓存中。
7.根据权利要求1所述的一种根据软件版本迁移配置数据的方法,其特征在于,步骤S4中,实例化读写工具类用到的实例方法包括get方法和set方法:
get方法:从缓存中取值,参数为配置项的位置;
set方法:更新用户的配置文件中的值,通过获取配置项的位置,在相应位置为其赋新值。
8.根据权利要求7所述的一种根据软件版本迁移配置数据的方法,其特征在于,get方法和set方法中,支持使用“.连接”的方式操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211670447.0A CN115658119B (zh) | 2022-12-26 | 2022-12-26 | 一种根据软件版本迁移配置数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211670447.0A CN115658119B (zh) | 2022-12-26 | 2022-12-26 | 一种根据软件版本迁移配置数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658119A CN115658119A (zh) | 2023-01-31 |
CN115658119B true CN115658119B (zh) | 2023-04-18 |
Family
ID=85023159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211670447.0A Active CN115658119B (zh) | 2022-12-26 | 2022-12-26 | 一种根据软件版本迁移配置数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658119B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7337435B2 (en) * | 2002-01-09 | 2008-02-26 | International Business Machines Corporation | Efficient configuration data migration technique |
US7117482B2 (en) * | 2003-03-26 | 2006-10-03 | Sony Corporation | Migration of configuration data from one software installation through an upgrade |
US9678740B2 (en) * | 2015-10-01 | 2017-06-13 | Sap Se | Migration mechanism |
CN107678766A (zh) * | 2017-10-20 | 2018-02-09 | 国云科技股份有限公司 | 一种系统配置文件的升降级方法 |
CN107861737A (zh) * | 2017-11-06 | 2018-03-30 | 国云科技股份有限公司 | 一种大型系统的数据库版本迁移方法 |
CN113138781B (zh) * | 2020-01-19 | 2022-07-26 | 福建省天奕网络科技有限公司 | Csv配置更新方法、存储介质 |
CN111367546A (zh) * | 2020-02-26 | 2020-07-03 | 东风电子科技股份有限公司 | 软件升级过程中实现xml配置文件升级处理的方法 |
CN112799697B (zh) * | 2021-01-05 | 2023-12-22 | 上海浪潮云计算服务有限公司 | 一种基于标准框架的配置文件版本迁移方法 |
-
2022
- 2022-12-26 CN CN202211670447.0A patent/CN115658119B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115658119A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6269480B1 (en) | Cross platform installer-with the ability to create platform independent variables of specific operating system variables from a scripting language | |
US6615278B1 (en) | Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an OS/2 operating system environment | |
CN106775723B (zh) | 基于Android平台的系统固件定制的方法和Android设备 | |
US7765542B2 (en) | Method and system for describing and extracting application information | |
US11429365B2 (en) | Systems and methods for automated retrofitting of customized code objects | |
EP2562641B1 (en) | Software application porting system | |
WO2015176492A1 (en) | A system and method thereof for creating dynamically attachable and detachable binary files | |
CN110780897B (zh) | 一种代码变更方法以及装置 | |
US20090204629A1 (en) | Caching and memory optimizations for multi-layer xml customization | |
US8656349B2 (en) | Systems and methods for template reverse engineering | |
CN112306474B (zh) | 一种基于组件化模板的vue项目平滑升级方法 | |
US6507948B1 (en) | Method, system, and program for generating batch files | |
US6598225B1 (en) | System, method, and program for utilizing a software state machine carrying out the process flow of a software program | |
JP2007521529A (ja) | コンポーネントベースのソフトウェア・プロダクトの保守 | |
US6332219B1 (en) | Cross-platform program, system, and method having a global registry object for mapping registry functions in a windows operating system environment | |
CN106599167B (zh) | 一种支持增量升级数据库的系统和方法 | |
US6446255B1 (en) | Global registry object for mapping registry functions and registry equivalent functions across multiple operating systems in a cross-platform program | |
US6629316B1 (en) | Overriding program properties using a specially designated environment variable statement | |
US20210365258A1 (en) | Method and system for updating legacy software | |
US6536040B1 (en) | Cross-platform program, system, and method having a system independent registry for use on operating systems irrespective of a registry equivalent | |
KR102052776B1 (ko) | 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷 | |
CN104699503A (zh) | 一种替换安卓系统中函数的执行逻辑的方法及装置 | |
US7219341B2 (en) | Code analysis for selective runtime data processing | |
CN112612833B (zh) | 规则包更新方法、装置、设备及存储介质 | |
CN115658119B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |