【问题标题】:Visual Studio 2013 Setup project - How to disable the Cancel button in small progress bar dialog?Visual Studio 2013 安装项目 - 如何禁用小进度条对话框中的取消按钮?
【发布时间】:2015-05-28 06:07:31
【问题描述】:

在 Visual Studio 2013 的 MSI 设置项目中,我有一个 Windows 窗体 UI 向导作为自定义操作。在安装过程中,UI 顶部会出现一个小的进度条对话框。此对话框还有一个取消按钮和文本,例如“Windows 配置时请稍候......”

我们能否以某种方式隐藏或禁用此对话框?我们可以禁用此对话框上的取消按钮吗?或者我们可以把这个对话框放在主 UI 后面,这样用户就不能点击取消?或者我们可以检测到这个取消按钮点击事件并在自定义操作中处理吗?

【问题讨论】:

  • 我可以在安装过程中摆脱这个进度条对话框,方法是添加一个预制的 UI 对话框,如 Welcome 或 Finished。虽然这个添加的对话框是多余的,但安装没有显示进度条。卸载问题依然存在。我也想对卸载使用相同的方法,但它不允许我为卸载添加预制 UI 对话框。在浏览了有关此问题的一些链接和帖子后,我正在寻找一些解决方法,例如在卸载期间检测“取消”按钮单击并在我的自定义操作中处理此问题?

标签: visual-studio-2013 setup-project


【解决方案1】:

没有很好的答案,所以基本上这只是信息。

Windows Installer 体系结构要求所有 UI 都在第一个 UI 序列中完成,这是输入数据的地方。您可能从绝大多数执行此操作的其他设置中了解这一点。除错误和进度条外,执行序列旨在保持静默。当 Visual Studio 设置允许安装程序类作为人们运行托管代码自定义操作的一种方式时,我认为他们并不希望人们在那里拥有 UI。由于消息泵的 STA/MTA 线程差异,它通常不起作用,并且由于 Windows Installer 本身对您显示 UI 的自定义操作一无所知(不应该是 UI!)它仍然认为它具有用户的焦点。另一个问题是,许多客户希望能够进行静默安装,而您对 UI 向导的要求无法实现这一点。

我认为有些人试图通过枚举系统上的所有 Windows 以找到 Windows Installer 并将其强制到后台来解决您的问题,但我最近没有看到任何关于此或任何代码示例的内容。

在您的情况下,如果您的 UI 数据可以通过其中一个预设 UI 对话框预先收集,那么请尝试这样做。不幸的是,VS 设置并没有为您提供验证输入的方法。如果 UI 向导是针对应用程序本身的,那么在应用程序首次运行时通常会更容易执行,并且更容易测试和调试,能够稍后运行以重新配置,并避免此类问题。

VS 设置的限制包括不能设计自定义对话框以在开始 UI 序列时以预期的方式收集和验证输入。您也不能禁用取消按钮,因为 VS 自定义操作在安装完所有内容后运行,这为时已晚,无法发送“禁用取消按钮”的消息。总体问题是您正在与 VS 设置的限制作斗争,而另一个工具可能是更好的选择,或者让该 UI 向导在应用程序的首次启动时运行。

【讨论】:

    【解决方案2】:

    我可以使用 Win32 API 隐藏进度条对话框本身。

    【讨论】:

    • 是的,这并不难,但是 VS 自定义操作都在安装结束时运行,所有内容都安装完毕,因此它并不是真正的 VS 设置解决方案。
    猜你喜欢
    • 2014-11-25
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 2013-03-29
    相关资源
    最近更新 更多