【发布时间】:2011-12-12 09:04:36
【问题描述】:
我正在客户端安装 c# windows 应用程序。在应用程序中,我需要一个连接字符串。安装时如何配置。此外,我想将 sql express 设置和 .Net Framework 设置与我的应用程序设置一起打包。这可能吗?
【问题讨论】:
-
你用的是什么安装软件?
标签: c# configuration installation connection-string
我正在客户端安装 c# windows 应用程序。在应用程序中,我需要一个连接字符串。安装时如何配置。此外,我想将 sql express 设置和 .Net Framework 设置与我的应用程序设置一起打包。这可能吗?
【问题讨论】:
标签: c# configuration installation connection-string
如果您使用的是 Visual Studio 安装程序,则可以将自定义页面添加到安装程序并添加处理该自定义页面结果的自定义操作。例如在 VS2010 Professional 中:
接下来您需要编写一个自定义操作来将连接字符串存储到 app.config 文件。问题Setup App.Config As Custom Action in Setup Project 涵盖了它,因此我将留给您阅读并使用它。
据我所知,无法在 Visual Studio 安装程序中嵌入依赖项,但我建议您将其作为另一个问题,因为您的问题中确实有 两个 问题 = )
【讨论】:
Rob 的回答对您获得所需的 2/3 非常有帮助。我刚刚花了一些时间在最后 1/3 处找到自己的路,所以我希望这篇文章能帮助你比我更快地弄清楚:
这篇 MSDN 文章有助于解释如何创建自定义操作: https://msdn.microsoft.com/en-us/library/d9k65z2d(v=vs.100).aspx
为了将它们结合在一起,一旦您按照 MSDN 文章中的描述创建了自定义操作项目,您需要将其添加为您的部署项目的操作:
右键单击您的部署项目并选择查看 -> 自定义操作
右键单击安装并添加自定义操作
要将安装向导中输入的数据链接到您的代码: 对于上面定义的每个自定义操作(在安装文件夹、提交文件夹等下),选择自定义操作项。在“属性”窗口中,填充 CustomActionData。例如,我在 UI 中指定了一些文本框字段,使其具有 Edit1Property 和 Edit2Property 值 CONFIGURATION_SERVER 和 DATABASE_NAME。为了使它们可用于我的自定义操作代码,我的 CustomActionData 设置为: /cfgServer=[CONFIGURATION_SERVER] /dbName=[DATABASE_NAME]
然后,在我的代码中,我可以通过引用来获取值: Context.Parameters["cfgServer"] 要么 Context.Parameters["dbName"] (两者都返回包含用户输入的字符串)。
我的代码在安装期间运行,我编写了一个方法来修改存储应用程序设置的 .CONFIG 文件以使用用户指定的值。
【讨论】:
Robs 的回答是正确的,那么您必须将自定义操作数据传递给自定义操作的主要输出。这是安装程序的一部分。现在在安装程序类中覆盖安装程序类的 BeforeInstall 方法。然后获取位置GetExecutingAssembly() 方法执行文件的执行。获取执行程序集后,您需要 application.exe.config 文件通过 File.ReadAllText 读取此文件并使用字符串的 Replace 方法更改连接字符串参数,但您必须添加唯一的占位符在您的默认连接字符串中用于替换此占位符。然后再次使用 File.WriteAllText 方法写入此文件。这将在安装时成功更改您的连接字符串,并且您的应用程序将以此运行。
【讨论】:
对于 Visual Studio 安装程序。
我已经为它做了一个小演示。这将很有用 Visual studio installer for web
【讨论】: