如何自定义Wix进度对话框?

时间:2010-08-06 10:00:30

标签: wix wix3.5

我正在尝试自定义标准WiX进度对话框(我想让它显示ActionData)。我跟着Neil's guide to customising dialogs但问题是,原来的ProgressDlg仍然显示而不是我的。

我想我知道原因:如果你查看source to ProgressDlg,你可以看到这段代码:

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

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

4 个答案:

答案 0 :(得分:4)

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

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

  <InstallUISequence>
    <Show Dialog="CustomProgressDlg" After="ProgressDlg" />
  </InstallUISequence>

答案 1 :(得分:2)

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

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

  • MaintenanceWelcomeDlg
  • ResumeDlg
  • WelcomeDlg

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

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