WiX刻录自定义BA - 如何在取消命令触发时暂停进度?

时间:2013-04-27 00:25:31

标签: wix windows-installer bootstrapper burn

使用自定义托管引导程序应用程序时,单击取消按钮时,我无法停止设置进度。我用是/否选项拉出确认视图。一旦确认取消,设置回滚就好了。或者,如果拒绝,它会继续。这是按照以下方式完成的: Cancel Installation and Rollback using wix burn Bootstrapper UI

我注意到在WiX设置套件本身也会出现同样的问题,您可以点击取消并等待,而设置而不是等待用户确认或拒绝取消,继续。

所以,我的问题是,如何在确认视图中确认(或拒绝)取消命令之前暂停进度?

更新:我试图通过以下机制执行此操作: 添加名为CancelWaiting的新属性。如果CancelWaiting为真,则在ProgressViewModel中更改逻辑,以使<PropertyChangedEventArgs>.Result设置为Result.Suspend。这里的挑战是进行多个命令绑定。另一种方法是将Cancel和CancelWaiting路径合并为一个。无论如何,一旦我开始这样做,我会更新这个帖子。如果有人有任何其他想法,请发布。

2 个答案:

答案 0 :(得分:3)

返回Result.Suspend将指示Burn引擎尽快停止安装并保持Bundle注册再次执行。这不太可能是你想要做的。

如果您想阻止继续进行,那么您必须拥有进度回调方法等待而不是返回。您可以通过显示进度回调方法中的消息框或让进度回调等待事件来执行此操作,并在用户在UI线程上做出选择后发出事件信号。

答案 1 :(得分:0)

我知道这是旧的,但我的方法可能会帮助其他人挣扎。我遇到了同样的问题,我不得不暂停安装/卸载自定义刻录wpf应用程序的进度。 所以这就是我解决它的方式: 我通过Window.ShowDialog(),创建了一个弹出模式窗口,因为gui线程将阻塞,直到弹出窗口关闭。

当用户按退出/取消时,您可以执行以下操作:

ModalWindow newWindow = new ModalWindow();
newWindow.ShowDialog();

您可以添加新窗口并以这种方式调用它。这将暂停UI线程,直到用户关闭或向ModalWindow提供反馈。

但是,如果你正在寻找其他方法,这里是一个很好的阅读 http://deanchalk.com/wpf-modal-controls-via-dispatcherframe-nested-message-pumps/