1

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

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

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

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

4

3 回答 3

3

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

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

另一个适合此类数据的地方是注册表。.NET 框架对此有很好的支持。MSDN其他地方有很多文档可以帮助您入门。

于 2012-05-24T13:45:12.217 回答
0

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

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

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

于 2012-05-24T13:51:08.797 回答
0

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

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

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

于 2012-05-24T13:52:56.920 回答