5

我正在尝试自定义标准的 WiX 进度对话框(我想让它显示 ActionData)。我已经按照Neil 的自定义对话框指南进行操作,但问题是,仍然显示原始 ProgressDlg 而不是我的。

我想我知道为什么:如果您查看ProgressDlg 的源代码,您会看到以下代码块:

   <InstallUISequence>
    <Show Dialog="ProgressDlg" Before="ExecuteAction" />
  </InstallUISequence>

因此,它不像大多数对话框那样由另一个对话框发布,而是作为InstallUISequence的一部分直接触发。那么我该如何覆盖它呢?

4

4 回答 4

4

似乎进度对话框必须是 ExecuteAction 之前 InstallUISequence 中的最后一件事 - 否则,因为进度对话框是无模式的,它会立即显示然后隐藏。

因此,我的解决方案只是确保我的自定义进度对话框显示在现有对话框之后:

  <InstallUISequence>
    <Show Dialog="CustomProgressDlg" After="ProgressDlg" />
  </InstallUISequence>
于 2010-08-06T10:49:43.347 回答
3

@Samuel,它就像 Bob 所说的那样工作:“只要你不引用 ProgressDlg”,但这种说法并不准确。您需要找到所有对 ProgressDlg 的引用,但要在 WiX 源中找到它们。然后,您需要创建您自己的引用 ProgressDlg 并包含在您的设置中的任何对话框版本(直接或间接使用它!),以使其也引用您的自定义对话框。

我试过这个来解决同样的问题。对于使用例如。除了 ProgressDlg 之外,您还必须创建自己的以下对话框版本:

  • 维护欢迎Dlg
  • 简历表
  • 欢迎Dlg

这是因为他们定义了一个引用 ProgressDlg 的 Show 元素。

于 2011-07-03T12:58:07.043 回答
2

ProgressDlg 仅在您引用它时才被安排。如果要替换它,请自定义对话序列以不引用 ProgressDlg。

于 2010-08-08T19:59:47.700 回答
0

@Klaus,幸运的是,您不必使用 v3.11.1 重新创建自己的对话框版本。在 中InstallUISequence,您可以覆盖对话序列,例如

<Show Dialog="WelcomeDlg" Before="ProgressDlgCustom">NOT Installed OR PATCH</Show>

确保省略Show/@override - 这是 WelcomeDlg 的确切条件。

于 2018-10-24T23:30:43.890 回答