我的安装程序引导程序应用程序在开始时进行一系列MSI调用,以便从MSI获取信息(安装了哪些版本,安装了哪些功能,属性值,路径等)。在进行这些MSI调用时,Windows安装程序会抛出一个窗口,上面有一个取消按钮。我的代码到处都有陷阱来检查MSI调用返回的错误代码是否为ERROR_INSTALL_USEREXIT,这样如果用户单击“取消”,引导程序应用程序就可以停止,但是我所看到的所有返回值,即使我确定我确定我设法点击取消按钮(我实际上看到按钮被沮丧),是ERROR_SUCCESS。
有没有办法100%确定地告诉用户在进行MSI通话时是否点击了取消?如果没有,有没有办法在MSI呼叫期间隐藏取消按钮,这样用户就不会被误认为他可以在那时取消? (在快速机器上,这不是什么大问题,因为对话很快就会消失,但在慢速机器上,用户实际上有机会点击按钮。)
答案 0 :(得分:0)
如果我理解正确,听起来你正在变小“准备安装”样式对话框。如果是这种情况,那么您要做的就是使用MsiSetInternalUI在您的呼叫前面隐藏所有(或大多数)UI。请注意,如果您再调用MsiInstallProduct或类似内容以启动安装,则可能需要还原非静默UI级别。
如果我误解了您的问题,而您正在谈论自定义操作,那么您的代码可以找到有关用户取消内容的唯一地方是通过MsiProcessMessage的返回代码,这也是您的API用于禁用取消按钮。