我有一个带有相应安装程序的 C# 应用程序。它从注册表中读取启动数据并将信息存储在“Environment.SpecialFolder.ApplicationData”\myapp 文件夹下。
我的问题是:如果我对包含新注册表项的代码进行各种更改,我应该在新版本中的哪里反映这一点,以便在重新运行设置时:
- 保留当前的注册表项/值
- 向注册表添加新的键/值
- 保持“应用程序数据”不变
候选人是:
- 装配信息
- 文件版本
如果还有其他人请告诉我。
谢谢
我认为您的应用程序应该能够创建记录键。您不知道用户是否手动删除它们以将设置重置为默认值。安装程序应该只安装和注册组件。(但卸载程序应该询问用户是否要删除设置,或保留它们。)
为了避免版本冲突,您可以记住一个额外的版本号进行配置。例如:程序版本 1.0 和 2.0 使用配置集 1,而程序版本 3.0 使用配置集 2,因为存在过时/新设置。只需在您的注册表树中为每个配置集创建一个子键。“应用程序数据”还可以包括具有单独配置集的子文件夹。主要优点是,用户可以毫无问题地降级。新版本可以从旧配置中导入旧值作为默认值。
切勿删除(或更改类型或范围)设置。只需添加新密钥。旧程序版本不知道它们,所以他们只是忽略它。这很简单,因为没有不同的配置版本。但是如果你保存了很多设置,它会变得很复杂,因为你不能改变一个设置的类型。例如,您必须创建一个新键来将设置从保存整数更改为长整数,因为旧版本不理解长整数并且会崩溃。