【问题标题】:WiX burn custom BA - how to pause progress when Cancel command fires?WiX刻录自定义BA-取消命令触发时如何暂停进度?
【发布时间】:2013-04-21 06:04:51
【问题描述】:

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

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

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

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

【问题讨论】:

  • 按照 Rob 的建议,我最终从进度回调方法中显示了取消确认视图。

标签: wix windows-installer bootstrapper burn


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多