3

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

我注意到 WiX 设置工具包本身也出现了同样的问题,您可以在其中单击取消并等待,然后继续设置而不是等待用户确认或拒绝取消。

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

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

4

2 回答 2

3

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

如果要阻止进度继续进行,则必须让进度回调方法等待而不返回。您可以通过显示进度回调方法中的消息框来做到这一点,或者让进度回调等待事件并在用户在 UI 线程上做出选择后向事件发出信号。

于 2013-04-27T04:39:40.663 回答
0

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

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

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

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

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

于 2017-04-29T15:04:49.067 回答