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

时间:2015-05-28 06:07:31

标签: visual-studio-2013 setup-project

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

我们可以以某种方式隐藏或禁用此对话框吗?我们可以在此对话框中禁用“取消”按钮吗?或者我们可以在主UI后面使用此对话框,以便用户无法单击取消吗?或者我们可以检测到此取消按钮单击事件并处理自定义操作吗?

2 个答案:

答案 0 :(得分:0)

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

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向导。

答案 1 :(得分:0)

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