我们使用Innosetup安装程序将二进制文件和INI文件安装到系统上。 在升级时,我们只需删除现有的二进制文件并安装新的二进制文件。 但是它与INI文件有点不同,因为用户可以编辑ini文件值,我们希望保留该更改。在我们安装更新的ini文件之前,我们复制现有的ini文件,并附加_copy附加到名称,删除原始ini文件,使用默认值安装新的ini文件,然后读回_copy ini文件并使用(Section,key)恢复值)。
---这个系统工作正常,直到我们决定重命名密钥或更改部分名称。然后我们必须有安装后更新ini文件的脚本。
从目前的策略来看,我长期看到的问题是,如果用户想要从1.0.1更新到1.0.9,我们该如何处理? 强制他们将每个安装程序从1.0.1运行到1.0.9? 构建迁移工具?是否存在某人目前使用的策略?
答案 0 :(得分:2)
这适用于数据库以及版本化的任何结构化数据。 您需要决定是否支持迁移,如果您这样做,则需要在每个版本之间创建迁移脚本或实用程序。按版本我的意思是每个版本都会更改特定用户数据资源的数据架构。将每个迁移分开,然后一次迁移一个。因此,如果您必须跨4个版本进行迁移,则从1> 2 2-> 3 3-> 4迁移。隔离用于迁移到迁移库的代码。在某些时候,您必须决定支持哪些版本的迁移。如果您决定停止支持迁移路径,那么他们可能需要先安装旧版本。基本上,我提供迁移,但对你支持的内容合理。
如果可能,请保留原始用户数据的备份,并将其留给用户删除。这样就可以进行手动回滚或升级。
所有这一切都是假设一个更多的企业产品与销售工程师或至少与客户建立更直接的关系,因为这是我唯一的经验。如果您的产品用于大众消费,那么支持传统的ini并保留用户数据可能更为明智。我希望像YAML / JSON或数据库这样的结构化数据能够进行需要迁移的架构更新,但是像INI文件这样简单的东西应该很容易支持旧版本,因为它只是键/值。
答案 1 :(得分:0)
用户INI文件仅供用户使用,永远不会更改。