MSI安装:取消不起作用

时间:2011-07-05 09:45:12

标签: windows-installer

CANCEL按钮在默认安装程序UI中的工作原理是什么?

如果我单击“取消”按钮,有时我可以看到“是否要取消设置”对话框,其中包含是或否选项。

但是在某些情况下,此弹出窗口不会显示并继续安装。

如果我在第一阶段结束时点击取消按钮,我就会看到这个问题。状态消息是“处理新文件”。

“处理新文件”是延迟操作。为什么在第一阶段会显示此消息?

3 个答案:

答案 0 :(得分:1)

您确定它实际上正在运行“正在复制新文件”操作,还是之后的操作不会发布任何进度更新?如果是自定义操作,请注意它执行以下两项操作之一:

  • 从不调用MsiProcessMessage(或等效的)
  • 注意MsiProcessMessage的返回码并正确处理取消

如果操作从不调用MsiProcessMessage,则Windows Installer将处理该操作的取消,但无法在操作过程中取消它。如果操作调用MsiProcessMessage(具有eMessageType的某些值),则Windows Installer会假定该操作将处理取消,并且操作必须返回ERROR_INSTALL_USEREXIT或Windows Installer会感到困惑。

答案 1 :(得分:0)

CANCEL按钮在默认安装程序UI中的工作原理是什么?他们在WindowsForms .NET中使用多个线程,如BackgroundWorker。 UI的一个线程和安装的一个线程,如果单击取消(UI),它将尝试在某个时间点停止另一个线程(安装)。

答案 2 :(得分:0)

MSI安装过程的执行顺序分两个阶段运行:

  1. 首先应该执行的所有操作都写在临时安装脚本中。这是立即的,它总是显示取消弹出窗口。
  2. 第二阶段运行该脚本并实际执行安装。它以延迟方式运行。根据您何时按下取消,可能会显示或不显示弹出窗口。
  3. 例如,当提交操作开始执行时,无法再取消安装。