C#应用程序版本管理

时间:2011-07-02 14:56:07

标签: c# reinstall

我有一个C#应用程序及其相应的安装程序。它从注册表中读取启动数据,并将信息存储在“Environment.SpecialFolder.ApplicationData”\ myapp文件夹下。

我的问题是:如果我对包含新注册表项的代码进行了各种更改,我应该在新版本中将其反映出来,以便在重新运行安装时:

  • 保留当前的注册表项/值
  • 向注册表添加新的键/值
  • 保持“应用程序数据”不变

候选人是:

  • 装配信息
  • 文件版本

如果有其他人请告诉我。

由于

1 个答案:

答案 0 :(得分:0)

我认为您的应用程序应该能够创建regestry键。您不知道用户是否手动删除它们以将设置重置为默认值。安装程序应仅安装和注册组件。 (但卸载程序应询问用户是否要删除设置,或保留它们。)

解决方案A)

为避免版本冲突,您可以记住配置的额外版本号。作为示例:程序版本1.0和2.0使用配置集1而程序版本3.0使用配置集2,因为存在过时/新设置。只需在注册表树中为每个配置集创建一个子键。 “应用程序数据”还可以包括具有分离配置集的子文件夹。 主要优点是,用户可以毫无问题地降级。 新版本可以将旧配置中的旧值作为默认值导入。

解决方案B)

永远不要删除(或更改类型或范围)设置。只需添加新密钥即可。旧程序版本不了解它们,所以它们只是忽略它。这很简单,因为没有不同的配置版本。但是,如果您保存了很多设置,它可能会变得复杂,因为您无法更改设置的类型。作为示例,您必须创建一个新密钥以将设置从保存整数更改为长整数,因为旧版本不能理解长整数并且会崩溃。