C#自定义操作窗口形成了焦点问题

时间:2013-09-30 06:06:18

标签: c# windows visual-studio setup-project

背景 我使用Visual Studio安装项目将一个C#应用程序部署到客户端Windows服务器。 在安装应用程序时,我还需要在服务器中设置计划任务 为此,我在安装项目中使用了自定义操作功能。我所做的是创建一个带有输入字段和“确定”按钮的窗体,一旦用户输入值并单击“确定”按钮,就会创建任务。我在Install中的CommitCustom Action步骤中添加了此自定义任务。

问题 :一切正常但是当从节目创建窗口时,即使我使用showDialog方法来显示表单,它也会丢失焦点。因此,总是主设置窗口将处于活动状态,用户无法在后台看到弹出窗体(请参见附图)。但是我可以单击弹出窗口并激活它。我尝试使用SetActiveWindow方法但到目前为止还没有很好的结果。

简单我需要的是激活弹出窗口直到用户操作(默认showDialog行为)。所以我在这里寻求任何帮助。 enter image description here

1 个答案:

答案 0 :(得分:1)

如果您想在MSI部署期间使用自定义UI获取用户输入,最佳方法是创建.wid扩展名文件。这是您在MSI安装期间看到的UI文件类型(,您选择安装路径等)。虽然visual studio没有创建这些UI文件的功能,但您可以使用Microsoft工具来创建这些文件。最好的工具之一是Orac

创建UI文件后,您必须将文件放在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\Deployment\VsdDialogs\1033下(它是MSI从中选择默认UI文件的地方)

之后,您应该能够选择自定义UI并在安装周期的任何阶段(安装,安装,安装后等)注入它。然后,您可以将用户输入的值传递给文本字段作为安装程序类的参数。然后,您可以使用上下文参数读取安装程序类中的值。

string value = Context.Parameters["ParameterName"];