1

如何创建一个设置,在安装时在配置文件中动态获取和保存信息。保存的信息在应用程序中使用。例如:在安装应用程序时获取数据库名称或 FTP 详细信息作为用户输入。

使用的工具:Visual Studio 2010

4

3 回答 3

0

我已经非常成功地使用了自定义操作 dll 来完成您所说的事情。

如果你用谷歌搜索这个,你会发现很多热门,这里就是这些工作方式的一个例子(在向你展示结构方面似乎相当不错)。

您的 dll 中的代码只是 c#,因此它几乎可以做任何您想做的事情,动态写入配置文件等。但是,您可能会受到限制,但是,基于运行设置的帐户的权限 - 例如大多数“用户”帐户将无法写入 c:\program 文件..... - 这就是为什么许多安装程序需要以管理员身份运行的原因。

使用 VS Setup 项目设置,您可以将设置中的信息传递到 Dll(请注意安装覆盖上的入站参数),尽管您可以传递的数据量是有限的。我通常传入安装文件夹(所以我的 dll 知道要修改文件的位置)和“环境”设置,还有用户名密码等,所以我知道要访问哪个数据库(以及使用什么帐户来访问它),在什么帐户下运行某某服务等。这些可以通过您可以引入安装项目本身的有限范围的对话框来捕获。

这种方法还意味着在开发过程中我们不必过多担心配置文件中的值,因为我们知道它们会在安装过程中正确设置。特别是对于用户名和密码,这意味着开发人员不需要知道它们(执行安装的操作员是唯一知道它们的人),从安全角度来看这很好。

最后请注意,这里还有一个用于卸载的钩子,因此如果您可能需要撤消某些操作,则可以在此处进行操作。

于 2012-12-20T14:32:51.250 回答
0

您可以在运行时修改 app.config 文件中的设置,并将这些更改永久保存。例如,如果要连接到数据库,则在应用程序启动时提供服务器名称和数据库名称。请参阅这篇文章 在运行时更新 app.config system.net 设置

于 2012-12-20T13:39:09.107 回答
0

我们已经成功地使用 xslt 将我们的 Web.Config 文件转换为 xml 文件中的适当设置。你可以看看下面的线程

使用版本控制时处理跨多台机器的 web.config 差异

它详细说明了这一点。会认为你可以用windows做类似的事情。

像这样,将此文件命名为App.Config.xslt并调用它,传入您的设置,这将生成和 App.Config 具有正确的替换。

C#

   class Program
    {
        static void Main(string[] args)
        {
            XPathDocument xPathDocument = new XPathDocument(@"..\..\YourSettings.xml");
            XslCompiledTransform xslCompiledTransform = new XslCompiledTransform();
            xslCompiledTransform.Load(@"..\..\App.Config.xslt");
            XmlTextWriter writer = new XmlTextWriter(@"..\..\App.Config", null);
            xslCompiledTransform.Transform(xPathDocument, null, writer);
        }
    }

应用程序.Config.xslt

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
<xsl:template match="YourSettings">
    <configuration>
      <connectionStrings>
        <add name="YourApp" connectionString="User Id={YourAppId};Password=&quot;{YourAppPassword}&quot;;Data Source={YourAppName}" />
      </connectionStrings>
</configuration>
</xsl:template>
</xsl:stylesheet>

并且您的配置设置位于另一个文件中

你的设置.xml

<?xml version="1.0" encoding="utf-8" ?>
<YourSettings>
  <YourAppId>localhost</YourAppId>
  <YourAppPassword>password1234</YourAppPassword>
  <YourAppName>username</YourAppName>
</YourSettings>
于 2012-12-20T14:03:05.420 回答