Visual Studio 2013安装项目-如何在小进度条对话框中禁用取消按钮



我在Visual Studio 2013中的MSI设置项目中有一个windows窗体UI向导作为自定义操作。在安装过程中,一个小的进度条对话框出现在UI的顶部。这个对话框也有一个取消按钮和文本,如"请等待,而Windows配置....。'

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

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

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

我想有些人试图通过列举系统上所有的Windows来找到Windows安装程序并将其强制到后台来解决你的问题,但我最近没有看到任何关于这个或任何代码示例的东西。

在您的情况下,如果您的UI数据可以使用一个罐装UI对话框预先收集,那么请尝试。不幸的是,VS设置不给你一种验证输入的方法。如果UI向导是针对应用本身的,那么在应用第一次运行时通常更容易做到这一点,也更容易测试和调试,能够在以后运行以重新配置,并避免此类问题。

VS设置的限制包括没有设计自定义对话框来在开始UI序列时以预期的方式收集和验证输入。此外,你不能禁用取消按钮,因为VS自定义操作运行后,一切都安装,这是来不及发送消息说"禁用取消按钮"。总的问题是,你正在与VS设置的限制作斗争,另一个工具可能是一个更好的方法,或者让UI向导在应用程序的第一次启动时运行。

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

最新更新