在升级之间保留应用程序设置的最佳方法是什么?

时间:2012-05-24 13:31:20

标签: c#

我们的产品有几个用户定义的设置,这些设置迄今已使用项目的设置变量进行存储,例如

public string MySetting {
  get { return Settings.Default.MySetting; }
  set { 
    Settings.Default.MySetting = value;
    Settings.Default.Save();
  }
}

这很好 - 但它有一个不幸的特点,如果您卸载应用程序并重新安装较新版本(不存在直接升级路径 - 请不要问),所有设置都将丢失。

我可以想到实现这一目标的几种方法,但它们对我来说似乎都有些愚蠢。您认为在卸载和卸载之间保留用户定义的应用程序设置的最佳方法是什么?重新安装?

3 个答案:

答案 0 :(得分:3)

在Windows上,我可以通过两种方式来实现这一目标。第一种是简单地将XML / INI / JSON /任何文件存储在用户的AppData文件夹中。这会将文件放在应用程序的路径之外,这意味着您可以轻松地再次获取它。您可以像这样找到AppData文件夹:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

另一个对这类数据有利的地方是注册表。 .NET框架对此有很好的支持。 MSDNother places上有很多文档可以帮助您入门。

答案 1 :(得分:0)

我知道对于ClickOnce应用程序,一个简洁的功能是使用用户设置来指示默认情况下是否需要将更新设置为true。然后,例如在Program.cs中,您可以这样:

if (Properties.Settings.Default.SettingsUpgradeRequired)
{
    Properties.Settings.Default.Upgrade();
    Properties.Settings.SettingsUpgradeRequired = false;
    Properties.Settings.Default.Save();
}

即使您不使用ClickOnce作为部署方法,这是否适用于您的情况?

答案 2 :(得分:0)

您可以向UnInstall添加自定义操作,询问用户是否要保留用户设置或删除所有数据。

如果用户决定保留设置,您可以在安装路径中保留设置文件以保留所有参数,并向安装添加自定义操作,以使用旧文件的设置替换安装时的设置。

您还可以将这些值添加到注册表中,并在安装中检查它们。