【问题标题】:Initializing user.config or app.exe.config during install在安装过程中初始化 user.config 或 app.exe.config
【发布时间】:2010-09-09 16:28:12
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: .net deployment configuration-files


    【解决方案1】:

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

    【讨论】:

    • .net 是如此的 xcopy,以至于“严肃”的安装程序似乎是一种浪费。我们在大约两天内编写了自己的 XML 脚本安装程序,它完成了我们需要的一切,而且我们可以轻松扩展它。
    • 谁有 2 天时间编写安装程序...? ;-)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-02-01
        • 1970-01-01
        • 2018-11-06
        • 1970-01-01
        • 2016-06-14
        • 2020-07-08
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        相关资源
        最近更新 更多