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

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

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

但是,除了这几个之外,我看不到这样做的方法:

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

有没有人知道任何替代品,或方法使上述两个可口?

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

===============>>#1 票数:3

如果您为大公司创建此应用程序,那么您应该查看组策略 不幸的是,它会让你的应用程序回到注册表的黄金时代。 我明白,这对你的程序来说是一个巨大的改变,但这就是这个方法。

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

===============>>#2 票数:1

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

===============>>#3 票数:0

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

  ask by Chris Ammerman translate from so

未解决问题?本站智能推荐:

4回复

使用clickonce部署时请勿覆盖app.config

通过clickonce更新应用程序时,如何指定我的应用程序不覆盖客户端计算机上的app.config?
2回复

自动化clickonce构建

我有一个包含数据库连接字符串的单击一次应用程序。 我的用户使用此程序可以连接到8个不同的数据库。 用户可能需要一次打开多个版本的程序,一次连接到不同的数据库,我希望他们一次安装同一程序的多个“版本”。 他们连接到的每个数据库一个。 版本之间(目前)的唯一区别是连接字符串(存储在易
1回复

如何通过ConfigurationManager写入User.Config文件?

我正在尝试使用ConfigurationManager将用户设置保留到配置文件中。 我想将这些设置仅限于用户,因为没有管理员权限,无法在Vista / Win 7上保存应用程序更改。 这似乎得到了用户的配置,它似乎保存在Win 7中([Drive]:\\ Users \\ [User
2回复

在使用capistrano和svn部署rails时,在哪里放置app-config-files

我有两个配置文件 和 我不想将数据库凭据和userconfig放在svn-repository中,所以我签入了database.yml.dist和userconfig.yml.dist。 在第一次部署应用程序时,在共享目录中获取dist文件的copys的最佳方法是什么?
3回复

Java部署,配置文件更改

我在服务器上部署了一个Java项目。 现在,我要在“项目/WebContent/WEB-INF/configuration.propertys”中进行一些更改。 我的问题是我需要在本地计算机上进行更改并重新部署,还是可以仅在服务器目录中进行一些更改? 正如我在服务器目录中看到的conf
1回复

在源代码管理中跟踪配置文件并从CI部署

与许多应用程序一样,我们为Java应用程序提供了许多配置和属性文件。 我们采用了将这些文件与我们的代码库分开的方法(即,它们不包含在war文件中进行部署),而是保留在单独的目录中。 但是,我仍然希望在源代码管理中跟踪对这些文件的更改,并使用我们的CI进行部署。 我正在寻找其他人如何做到
1回复

具有本地用户文件的ClickOnce部署

我想部署ClickOnce应用程序,但希望有一个可配置的用户文件来存储设置和首选项,每次我发布新版本时都不会被覆盖。 有没有指定一个特定文件应部署在尚无特定文件的任何安装中,而不会覆盖任何以前的版本? 我可以设想的唯一解决方法是将数据存储在数据库中,但是它以用户为中心,因此重新创建配置文
6回复

获取另一个Exe的App.Config

我有一个带有App.Config文件的exe。 现在我想在exe周围创建一个包装器dll,以便消耗一些功能。 问题是如何从包装器DLL访问exe中的app.config属性? 也许我应该在我的问题中多一点,我有以下app.config内容与exe: 问题是如何从包装器dll
1回复

web.config覆盖了app.config ...为什么?

我有两个DLL:一个带有web.config,另一个带有app.config 我将连接字符串从web.config移动到app.config,以便其他DLL可以使用它。 现在,当我调用ConfigurationManager.GetSection("SomeSection") ,应用
2回复

等同于dll COM组件的app.config

在.Net世界中,有一个标准的位置来存储可根据您所部署的环境进行更改的配置值。 那就是app.config / web.config。 最近,我不得不与一些旧版COM组件进行互操作。 我了解COM组件已在注册表中注册。 但是,一个COM组件在哪里存储其特定于应用程序的设置。 例