【问题标题】:how to specify connectionstring of sql server while installation安装时如何指定sql server的连接字符串
【发布时间】:2011-12-12 09:04:36
【问题描述】:

我正在客户端安装 c# windows 应用程序。在应用程序中,我需要一个连接字符串。安装时如何配置。此外,我想将 sql express 设置和 .Net Framework 设置与我的应用程序设置一起打包。这可能吗?

【问题讨论】:

  • 你用的是什么安装软件?

标签: c# configuration installation connection-string


【解决方案1】:

如果您使用的是 Visual Studio 安装程序,则可以将自定义页面添加到安装程序并添加处理该自定义页面结果的自定义操作。例如在 VS2010 Professional 中:

  1. 创建 Visual Studio 安装程序安装项目
  2. 将项目输出添加到安装程序,添加快捷方式,并根据自己的喜好配置安装程序。 (即现在假设它不会为您配置连接字符串并按照您想要的方式配置其他所有内容。现在提交您选择的源代码管理,以便您可以重试如果您有问题)
  3. 在解决方案资源管理器中右键单击设置项目,然后选择查看 > 用户界面
  4. 右键单击“开始”(在步骤 3 后出现的“用户界面”窗口中)并选择“添加对话框”
  5. 从“文本框 (A)”、“文本框 (B)”或“文本框 (C)”中选择一个,然后单击“确定”(据我所知,无论您选择哪一个 A/B/C选择)。
  6. 单击“用户界面”窗口中的“文本框 (A)”并将其拖到上方“确认安装”,因为您可能希望连接字符串对话框出现在之前“我们已经准备好安装了,你确定吗”窗口。
  7. 右键单击“文本框 (A)”并选择“属性窗口”
  8. 自定义属性(它们将出现在解决方案资源管理器下方/旁边的“属性”选项卡中,以便:
    1. 将 Edit2Visible、Edit3Visible 和 Edit4Visible 设置为 false
    2. Edit1Label 到“连接字符串:”(或您选择的措辞)
    3. Edit1Property 为“SQL_CONNECTION_STRING”(或您选择的名称 - 这是自定义操作将引用的名称)
  9. 构建并运行安装程序以确保它仍能正确安装。

接下来您需要编写一个自定义操作来将连接字符串存储到 app.config 文件。问题Setup App.Config As Custom Action in Setup Project 涵盖了它,因此我将留给您阅读并使用它。

据我所知,无法在 Visual Studio 安装程序中嵌入依赖项,但我建议您将其作为另一个问题,因为您的问题中确实有 两个 问题 = )

【讨论】:

  • 抱歉,您介意给我一个更好的第二部分链接吗?怎么样?\在哪里?我是否编写代码以连接到您添加的“用户界面”。
【解决方案2】:

Rob 的回答对您获得所需的 2/3 非常有帮助。我刚刚花了一些时间在最后 1/3 处找到自己的路,所以我希望这篇文章能帮助你比我更快地弄清楚:

这篇 MSDN 文章有助于解释如何创建自定义操作: https://msdn.microsoft.com/en-us/library/d9k65z2d(v=vs.100).aspx

为了将它们结合在一起,一旦您按照 MSDN 文章中的描述创建了自定义操作项目,您需要将其添加为您的部署项目的操作:

  1. 右键单击您的部署项目并选择查看 -> 自定义操作

  2. 右键单击安装并添加自定义操作

  3. 双击应用程序文件夹
  4. 点击添加输出并选择您的自定义操作项目输出
  5. 右键单击 Commit 并重复(“添加自定义操作”,选择您的自定义操作项目的输出)。如果需要,重复回滚和卸载。

要将安装向导中输入的数据链接到您的代码: 对于上面定义的每个自定义操作(在安装文件夹、提交文件夹等下),选择自定义操作项。在“属性”窗口中,填充 CustomActionData。例如,我在 UI 中指定了一些文本框字段,使其具有 Edit1Property 和 Edit2Property 值 CONFIGURATION_SERVER 和 DATABASE_NAME。为了使它们可用于我的自定义操作代码,我的 CustomActionData 设置为: /cfgServer=[CONFIGURATION_SERVER] /dbName=[DATABASE_NAME]

然后,在我的代码中,我可以通过引用来获取值: Context.Parameters["cfgServer"] 要么 Context.Parameters["dbName"] (两者都返回包含用户输入的字符串)。

我的代码在安装期间运行,我编写了一个方法来修改存储应用程序设置的 .CONFIG 文件以使用用户指定的值。

【讨论】:

    【解决方案3】:

    Robs 的回答是正确的,那么您必须将自定义操作数据传递给自定义操作的主要输出。这是安装程序的一部分。现在在安装程序类中覆盖安装程序类的 BeforeInstall 方法。然后获取位置GetExecutingAssembly() 方法执行文件的执行。获取执行程序集后,您需要 application.exe.config 文件通过 File.ReadAllText 读取此文件并使用字符串的 Replace 方法更改连接字符串参数,但您必须添加唯一的占位符在您的默认连接字符串中用于替换此占位符。然后再次使用 File.WriteAllText 方法写入此文件。这将在安装时成功更改您的连接字符串,并且您的应用程序将以此运行。

    【讨论】:

      【解决方案4】:

      对于 Visual Studio 安装程序。

      1. 将 Visual Studio Installer Web 设置项目添加到您的解决方案中。
      2. 当你在项目上右击,然后你可以看到选项View有选项可以选择File System, UI interface, Custom Actions
      3. 最初您必须选择文件系统,然后右键单击Web 应用程序文件夹,然后添加选择项目输出,然后选择主输出(确保选择要部署的项目)。
      4. 然后您必须选择 Content Files,就像我们选择表单项目输出的方式一样。
      5. 添加 UI 字段
      6. 右键单击自定义操作添加新的自定义操作,然后将参数传递给它。

      我已经为它做了一个小演示。这将很有用 Visual studio installer for web

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-15
        • 2017-05-11
        相关资源
        最近更新 更多