在安装期间初始化user.config或app.exe.config

时间:2008-09-16 18:37:33

标签: .net deployment configuration-files

我正在开发一个.NET WinForms应用程序,该应用程序依赖于user.config来存储各种有用的设置,例如Intranet Web服务URL。我们希望能够在安装过程中导入自定义初始设置。这种情况的用例是,如果一家公司有100台想要安装软件的机器,并且它们都应该引用有问题的Intranet Web服务,则不需要在所有机器上手动设置。 / p>

我们目前正在使用VS2008安装项目来生成安装包。

到目前为止,我们的想法是让安装程序使用信息(来自模板)创建自定义的初始.config文件,然后将其放置到位,而不是安装项目安装的默认文件。

然而,除了这些之外,我看不到这样做的方法:

  1. 将可执行文件名称硬编码为自定义安装程序操作(从System.Configuration.Install.Installer派生),以便使用ConfigurationManager类来确定.config文件路径。如果可执行文件名称发生更改,则需要手动更改安装程序。
  2. 滚动我们自己的配置类或文件/文件夹层次结构以存储设置。如果我理解正确的话,这基本上会阻止我们从.NET提供的隔离机制(这也是这里的障碍)的优势。
  3. 有没有人知道任何替代方案,或者让上述两种方法变得可口的方法?

    我担心答案可能是“不要这样做,它会破坏机制的精神,滚动你自己的设置导入机制”。

3 个答案:

答案 0 :(得分:3)

如果您为大公司创建此应用程序,那么您应该查看Group Policy。不幸的是,它会让你的应用程序回到注册表的黄金时代。我理解,这对你的程序来说是一个巨大的改变,但这是通向这种方式。

但是,如果Web服务的URL是唯一的,你必须以这种方式设置,然后GPO可能是一个矫枉过正。在那种情况下,我会硬编码可执行文件的名称。

答案 1 :(得分:1)

我知道这不是您正在寻找的答案,但您应该选择更“严肃”的安装程序。我们正在使用高级安装程序,这是一个爆炸,做任何你能想到的事情。

答案 2 :(得分:0)

如果您可以对配置文件中的至少一个设置进行硬编码,则可以使用此命令指向可以存储所有自定义配置设置的数据库或Web服务或网络文件路径。使用System.Configuration.ConfigurationManager.OpenExeConfiguration(),您可以在第一次运行时或每次应用程序启动时从此位置更新配置文件。