Migration 人们如何管理生产系统中的ini文件?
我们正在使用Innosetup安装程序将二进制文件和INI文件安装到系统上。 升级时,我们只需删除现有的二进制文件并安装新的二进制文件。 但是与INI文件有点不同,因为用户可以编辑INI文件值,我们希望保留该更改。在安装更新的ini文件之前,我们复制现有的ini文件,并在名称后面附加_copy,删除原始ini文件,安装新的默认ini文件,然后读回_copyINI文件,并使用(部分,键)还原值 ---该系统工作正常,直到我们决定重命名键或更改节名。然后我们必须有脚本在安装后更新ini文件 从长远来看,我目前的策略存在的问题是,如果用户希望从1.0.1更新到1.0.9,我们如何处理? 强制他们从1.0.1到1.0.9运行每个安装程序?Migration 人们如何管理生产系统中的ini文件?,migration,installation,config,inno-setup,ini,Migration,Installation,Config,Inno Setup,Ini,我们正在使用Innosetup安装程序将二进制文件和INI文件安装到系统上。 升级时,我们只需删除现有的二进制文件并安装新的二进制文件。 但是与INI文件有点不同,因为用户可以编辑INI文件值,我们希望保留该更改。在安装更新的ini文件之前,我们复制现有的ini文件,并在名称后面附加_copy,删除原始ini文件,安装新的默认ini文件,然后读回_copyINI文件,并使用(部分,键)还原值 ---该系统工作正常,直到我们决定重命名键或更改节名。然后我们必须有脚本在安装后更新ini文件 从长远来
构建迁移工具?是否有人正在使用策略?这适用于数据库以及任何版本化的结构化数据。 您需要决定是否支持迁移,如果支持迁移,则需要创建一个迁移脚本或实用程序,用于每个版本之间的迁移。所谓版本,我指的是改变特定用户数据资源的数据模式的每个版本。将每次迁移分开,然后一次迁移一个。因此,如果您必须跨4个版本进行迁移,请从1->2->3->4进行迁移。隔离即将迁移到迁移库中的代码。在某个时候,您必须决定支持哪个版本的迁移。如果您决定停止支持迁移路径,那么他们可能需要先安装旧版本。基本上,我会提供迁移,但对于您所支持的内容来说是合理的 如果可能,保留原始用户数据的备份,并由用户自行删除。这样,手动回滚或升级仍然是可能的
所有这些都是假设一个更具企业性的产品有销售工程师,或者至少与客户有更直接的关系,因为这是我唯一的经验。如果您的产品是用于大规模消费的,那么支持遗留ini和不使用用户数据可能会更明智。我希望像YAML/JSON或数据库这样的结构化数据具有需要迁移的模式更新,但像INI文件这样简单的文件应该很容易支持遗留版本,因为它只是键/值。这适用于数据库以及任何版本化的结构化数据。 您需要决定是否支持迁移,如果支持迁移,则需要创建一个迁移脚本或实用程序,用于每个版本之间的迁移。所谓版本,我指的是改变特定用户数据资源的数据模式的每个版本。将每次迁移分开,然后一次迁移一个。因此,如果您必须跨4个版本进行迁移,请从1->2->3->4进行迁移。隔离即将迁移到迁移库中的代码。在某个时候,您必须决定支持哪个版本的迁移。如果您决定停止支持迁移路径,那么他们可能需要先安装旧版本。基本上,我会提供迁移,但对于您所支持的内容来说是合理的 如果可能,保留原始用户数据的备份,并由用户自行删除。这样,手动回滚或升级仍然是可能的
所有这些都是假设一个更具企业性的产品有销售工程师,或者至少与客户有更直接的关系,因为这是我唯一的经验。如果您的产品是用于大规模消费的,那么支持遗留ini和不使用用户数据可能会更明智。我希望像YAML/JSON或数据库这样的结构化数据具有需要迁移的模式更新,但是像INI文件这样简单的东西应该很容易支持遗留版本,因为它只是键/值。用户INI文件是用户的,永远不要更改它
- 将默认值硬编码到应用程序或单独的默认INI文件中李>
- 如果找不到最新的名称,则使应用程序回退到旧密钥名称或节名称
- 将默认值硬编码到应用程序或单独的默认INI文件中李>
- 如果找不到最新的名称,则使应用程序回退到旧密钥名称或节名称