【发布时间】:2014-07-18 10:02:21
【问题描述】:
背景
我有一个用 C# 编写的简单 WinForms 应用程序。我讨论了一段时间的部署解决方案,但最终决定放弃 ClickOnce,因为其中一些限制非常严格。
相反,我采用了一个简单的解决方案,即通过应用程序属性中的程序集/文件版本(我使它们保持同步)对应用程序进行版本控制。我正在通过安装项目 (*.msi) 进行部署。我在线将最新的程序集版本号以及最新的安装程序文件存储在 XML 文件中。在运行时,我只需根据在线最新版本检查 Application.ProductVersion,如果有可用更新,则打开更新对话框。
问题
到目前为止,这工作得很好,但我最近注意到这种方法的一个主要问题。更新应用程序的程序集版本时,会在 AppData/Company/Product/Version/blahblahblah 中创建新版本的用户设置文件 (user.config)。这显然会迫使用户在新版本中重置所有内容。
建议的解决方案
我不确定如何进行。到目前为止,该应用程序只有 1 个版本,当前的用户群基本上是我可以乞求测试它的任何人,所以切换策略没什么大不了的。我考虑过:
1.) 编写我自己的设置系统,从而完全控制设置文件的存储和使用位置/方式。
2.) 重新考虑我的版本控制/更新策略,以便更新不基于程序集版本。我不确定我会如何做到这一点,但我的测试似乎表明,即使构建和安装具有相同程序集版本的新版本仍然会破坏 user.config。
我想我真正想问的是是否有任何方法可以保留默认设置系统,因为它非常易于使用,同时还可以适应我的部署策略。
【问题讨论】:
-
您可以将旧设置文件复制到新位置吗?
-
我考虑过这条路线,但我担心监控安装了哪些以前的版本会有点混乱,特别是如果用户跳过了几个版本。
标签: c# .net winforms settings versioning