【问题标题】:C# custom action windows form focused issueC# 自定义操作窗口表单焦点问题
【发布时间】:2013-09-30 06:06:18
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案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"];
    

    【讨论】:

    • 其实你之前提到的方法我已经走过了。但我的问题是,如果我需要验证用户输入,使用 Orca 进行配置非常困难。我试图找到任何有用的资源,但我找不到。这就是我尝试上述方法的原因。如果您知道任何与 C# 相关的示例代码,请告诉我。谢谢
    • 您仍然可以使用我提供的方法对用户输入的值进行验证,您可以验证它并从 Installer 类显示消息,如果验证失败,您也可以中止安装。跨度>
    • 你能帮我举个例子吗?因为我面临着缺乏信息。
    • 您能否继续创建自定义 .wid UI 并将其与您的 MSI 项目合并。如果您遇到任何问题,我可以为您提供帮助,一旦您从安装程序类中获取文本框的值,您就可以验证它并向用户显示消息,只需 ShowMessage() 即可,如果验证失败,您只需抛出一般异常(抛出新异常( );) 这将中止安装并恢复所有更改。
    • 感谢您的帮助。我根据需要成功创建了自定义对话框布局。现在我需要在Next 按钮的单击事件中验证三个文本字段。我不知道该怎么做。感谢您的帮助?
    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多