人们如何管理生产系统中的 ini 文件?

How do people manage ini files in production systems?

我们正在使用 Innosetup 安装程序将我们的二进制文件和 INI 文件安装到系统上。 在升级时,我们只需删除现有的二进制文件并安装新的。 然而,它与 INI 文件有点不同,因为用户可以编辑 ini 文件值,而我们希望保留该更改。在我们安装更新的 ini 文件之前,我们复制现有的 ini 文件并在名称后附加 _copy,删除原始 ini 文件,安装具有默认值的新 ini 文件,然后读回 _copy ini 文件并使用 (Section,key ).

---这个系统工作正常,直到我们决定重命名键或更改部分名称。然后我们必须有更新 ini 文件的脚本 post 安装。

我在长期 运行 中看到的问题是,如果用户想要从 1.0.1 更新到 1.0.9,我们该如何处理? 强制他们 运行 从 1.0.1 到 1.0.9 的每个安装程序? 构建迁移工具?有没有人目前正​​在使用的策略?

这适用于数据库以及任何版本化的结构化数据。 您需要决定是否支持迁移,如果支持,则创建一个在每个版本之间运行的迁移脚本或实用程序。我所说的版本是指每个版本都会更改特定用户数据资源的数据架构。将每个迁移分开,然后一次迁移一个。因此,如果您必须跨 4 个版本迁移,则从 1->2 2->3 3->4 迁移。隔离即将迁移到迁移库中的代码。在某些时候,您必须决定支持哪些版本进行迁移。如果您决定停止支持迁移路径,那么他们可能需要先安装旧版本。基本上,我会提供迁移,但对您支持的内容要合理。

如果可能的话,留下用户原始数据的备份,留给用户自行删除。这样仍然可以手动回滚或升级。

所有这些都是假设与销售工程师一起开发更多企业产品,或者至少与客户建立更直接的关系,因为这是我唯一的经验。如果您的产品面向大众消费,那么支持旧版 ini 并保留用户数据可能会更明智。我希望像 YAML/JSON 这样的结构化数据或数据库具有需要迁移的模式更新,但是像 INI 文件这样简单的东西应该很容易支持旧版本,因为它只是 key/value.

用户INI文件为用户专用,切勿更改。

  • 在应用程序或单独的默认 INI 文件中硬编码默认值。
  • 如果找不到最新的名称,则使应用程序回退到旧的键名称或部分名称。