2011-07-05 50 views
0

CANCEL按钮在默认安装程序UI中的工作原理是什么?MSI安装:取消不起作用

如果我点击取消按钮,有时候我可以看到“是否要取消设置”对话框,有或没有选项。

但是有些情况下,这个弹出窗口不会显示并且安装继续。

我看到这个问题,如果我只在第一阶段结束时单击取消按钮。状态消息是“应对新文件”。

“应对新文件”是延迟操作。第一阶段如何显示此消息?

回答

1

您确定它实际上正在运行“复制新文件”操作,还是在没有发布任何进度更新之后的操作?如果它是一个自定义操作,要小心,它的两两件事之一:

  • 从来不打电话MsiProcessMessage(或同等学历)
  • 注重MsiProcessMessage的返回码和把手取消适当

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

+0

几乎所有的自定义动作,在开始实际任务之前,调用MsiProcessMessage来设置状态。返回类型处理不当。 – Rajeshaz09

0

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

+0

我错过了什么吗?这个问题才会出现,如果我在第一阶段结束时点击取消按钮,状态消息显示在用户界面上是“应对新文件”。 – Rajeshaz09

+0

我发现这个,这可以帮助http://en.wikipedia.org/wiki/Windows_Installer – dpp

0

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

应执行
  1. 首先所有操作都写在一个临时的安装脚本。这是直接的,它总是显示取消弹出窗口。
  2. 第二阶段运行该脚本并实际执行安装。它按延期运行。取决于您何时按取消,弹出窗口可能会显示,也可能不显示。

例如,当提交操作开始执行时,安装不能再取消。

+0

这个问题出现在第一阶段。如果我在第二阶段点击取消按钮,我得到取消弹出窗口。但唯一的问题在第一阶段结束。一个重要的提示是,如果我直接在第二阶段点击取消按钮,我可以看到弹出窗口。但是,如果我点击第一阶段结束,我看不到......并立即如果我再次尝试在第二阶段,我冷看不到取消弹出窗口(安装跳过进一步取消按钮点击)。 – Rajeshaz09