【问题标题】:Update app.config file after installer upgrade安装程序升级后更新 app.config 文件
【发布时间】:2014-09-17 20:27:22
【问题描述】:

我目前正在使用 C# 开发 Microsft Word 应用程序级插件。我的应用程序包含一个 app.config 文件。在这个文件中,我保存了用户设置(userSettings-Section)和一些由自定义 ConfigurationSection 定义的数据。存储在自定义 ConfigurationSection 中的数据也是用户特定的。

我访问用户设置如下:

Properties.Settings.Default.MyUserSetting

我使用的自定义 ConfigurationSection 如下:

ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
     .GetSection("MyCustomConfigurationSection")

我的问题是:

  1. 我什至是否以“正确”的方式使用 app.config? (我知道可能不仅有一种正确的方式,“我的方式”也是其中之一吗?)

  2. Propeties.Settings.Default 使用哪个 ConfigurationUserLevel?有没有办法设置/更改它?

  3. 最重要的是:有没有办法在我的应用程序升级期间自动保留用户特定的设置,但同时添加新创建的设置?

我使用使用 WiX 构建的安装程序部署我的插件。目前我使用 CustomActions,它为每个添加/删除/更改的设置手动插入代码。但我想知道是否有内置的方法可以做到这一点。

【问题讨论】:

  • 我没有使用插件的经验,但 .NET 应用程序支持多个配置文件。您可能会发现此示例很有用CodePlex: Handle multiple configuration files
  • 似乎您必须提供完整的 xPath 作为字符串才能获取值。我宁愿继续通过属性访问它们。

标签: c# app-config upgrade


【解决方案1】:

我现在一整天都在做一些研究,我想我可以自己回答我的问题:

问:Propeties.Settings.Default 使用哪个 ConfigurationUserLevel?有没有办法设置/更改它?
A:Propeties.Settings.Default 好像使用了ConfigurationUserLevel.PerUserRoamingAndLocal,听起来合乎逻辑,因为它们只包含userSettings...我不知道是否可以更改它,但对我来说没有必要。

问:有没有办法在我的应用程序升级期间自动保留用户特定的设置,但同时添加新创建的设置?
答:我发现设置中有一个 Upgrade()-Method,它应该负责在旧版本产品和新产品之间复制用户设置。有关详细信息,请参阅http://ngpixel.com/2011/05/05/c-keep-user-settings-between-versions/。我必须承认我没有机会测试它,因为我没有构建安装程序的权限,但我会依赖它。在我测试了我的解决方案后,我会回到这篇文章。
此外,我不再使用自定义 ConfigurationSection。相反,我从 System.Configuration.ApplicationSettingsBase 派生,这意味着我能够像 Properties.Settings 一样处理自定义数据,包括 Upgrade()-Method。有关如何使用它的更多信息,请参阅this post

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多