C#应用程序版本管理

发布于 2024-11-18 08:01:41 字数 324 浏览 3 评论 0原文

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

我的问题是:如果我对包含新注册表项的代码进行各种更改,我应该在新版本中的哪里反映这一点,以便在重新运行安装程序时:

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

候选者是:

  • 程序集信息
  • 文件版本

如果还有其他版本,请告诉我。

谢谢

I have a C# app with its corresponding setup program. It reads startup data from the registry and stores information under the "Environment.SpecialFolder.ApplicationData"\myapp folder.

My question is: If I make various changes to the code that include new registry keys, where should I reflect this in the new version so when re-running the setup it:

  • Keeps current registry keys/values
  • Adds new Key/value to the registry
  • Leaves "Application Data" untouched

The candidates are:

  • Assembly Info
  • File Version

If there are others please let me know.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奈何桥上唱咆哮 2024-11-25 08:01:41

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

解决方案 A)

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

解决方案 B)

切勿删除(或更改类型或范围)设置。只需添加新键即可。旧的程序版本不认识它们,因此它们只是忽略它。这非常简单,因为没有不同的配置版本。但如果您保存大量设置,它可能会变得复杂,因为您无法更改设置的类型。例如,您必须创建一个新密钥来将设置从保存整数更改为长整数,因为旧版本不理解长整数并且会崩溃。

I think your application should be able to create the regestry keys. You don't know if the user removes them manually to reset the settings to default. The Setup should only install and register components. (But the Uninstaller should ask the User if he want to remove the settings, or keep them.)

Solution A)

To avoid version-conflicts you can remember a extra version number for configuration. As an Example: Program Version 1.0 and 2.0 are using the configuration-set 1 while Program Version 3.0 uses a configuration-set 2, because there are obsolete/new settings. Just create a sub-key in your registry tree for every configuration-set.
"Application Data" can also include a subfolder with seperated configuration sets.
The major advantage is, that the user can downgrade without problems.
New versions can import old values from older configuration as default values.

Solution B)

Never delete (or change the type or range) settings. Just add new keys. Old program versions don't know them so they just ignoring it. This is very simple because there are no different configuration versions. But if your saving a lot of settings it can become complicated, because you cannot change the type of a setting. As an example you have to create a new key to change a setting from saving an integer to a long integer, because old versions don't understand long integers and will crash.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文