【发布时间】:2011-07-06 20:06:54
【问题描述】:
CANCEL 按钮在默认安装程序 UI 中究竟是如何工作的?
如果我点击取消按钮,有时我可以看到带有是或否选项的“你要取消设置”对话框。
但在某些情况下,此弹出窗口不会出现,安装会继续。
我看到这个问题,如果我只在第一阶段结束时单击取消按钮。状态消息是“正在处理新文件”。
“处理新文件”是延迟操作。这个消息怎么会在第一阶段显示?
【问题讨论】:
CANCEL 按钮在默认安装程序 UI 中究竟是如何工作的?
如果我点击取消按钮,有时我可以看到带有是或否选项的“你要取消设置”对话框。
但在某些情况下,此弹出窗口不会出现,安装会继续。
我看到这个问题,如果我只在第一阶段结束时单击取消按钮。状态消息是“正在处理新文件”。
“处理新文件”是延迟操作。这个消息怎么会在第一阶段显示?
【问题讨论】:
您确定它实际上是在运行“复制新文件”操作,还是在此之后的操作不发布任何进度更新?如果是自定义操作,请注意它执行以下两项操作之一:
如果该操作从不调用 MsiProcessMessage,则 Windows Installer 将处理该操作的取消,但不能在操作中间取消它。如果该操作调用 MsiProcessMessage(eMessageType 具有某些值),则 Windows Installer 假定该操作将处理取消操作,并且该操作必须返回 ERROR_INSTALL_USEREXIT,否则 Windows Installer 会感到困惑。
【讨论】:
“取消”按钮在默认安装程序 UI 中究竟是如何工作的?他们使用多个线程,例如 WindowsForms .NET 中的 BackgroundWorker。一个线程用于 UI,一个线程用于安装,如果您单击取消(UI),它将尝试在某个时间点停止另一个线程(安装)。
【讨论】:
MSI 安装过程的执行顺序分为两个阶段:
例如,当提交动作开始执行时,不能再取消安装。
【讨论】: