11

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

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

到目前为止,我们的想法是使安装程序能够使用信息(来自模板)制作一个自定义的初始 .config 文件,然后将其放置在适当的位置,而不是安装项目安装的默认文件。

但是,除了这几个之外,我看不到其他方法:

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

有谁知道任何替代方案,或使上述两个可口的方法?

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

4

3 回答 3

3

如果您为较大的公司创建此应用程序,那么您应该看看Group Policy。不幸的是,它将使您的应用程序回到注册表的黄金时代。我知道,这将是您程序中的一个巨大变化,但这是实现这一目标的方法。

但是,如果 Web 服务的 URL 是唯一的东西,那么您必须以这种方式进行设置,那么 GPO 可能有点过头了。在这种情况下,我会硬编码可执行文件的名称。

于 2008-10-02T18:11:51.833 回答
1

我知道这并不完全是您正在寻找的答案,但您应该选择更“认真”的安装程序。我们正在使用 Advanced Installer,它非常棒,可以做任何你能想到的事情。

于 2008-09-16T21:35:53.777 回答
0

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

于 2008-10-01T09:11:15.370 回答