安装程序升级后更新app.config文件

时间:2014-09-16 14:58:03

标签: c# app-config upgrade

我目前正在使用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. 最重要的是:有没有办法在升级我的应用程序时自动保留用户特定的设置,但同时添加新创建的设置?

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

1 个答案:

答案 0 :(得分:1)

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

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

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

希望这有助于某人。