代码之家  ›  专栏  ›  技术社区  ›  Samuel Jack

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

  •  4
  • Samuel Jack  · 技术社区  · 14 年前

    我正在尝试自定义标准WIX进度对话框(我想让它显示ActionData)。我已经追随 Neil's guide to customising dialogs 但问题是,最初的进程dlg仍在显示,而不是我的。

    我想我知道为什么:如果你看 source to ProgressDlg 您可以看到这段代码:

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

    因此,与大多数对话框一样,它不是由另一个对话框发布的,而是作为 安装顺序 . 那么我该如何覆盖它呢?

    4 回复  |  直到 6 年前
        1
  •  4
  •   Samuel Jack    14 年前

    似乎进度对话框在执行之前必须是installuisequence中的最后一件事-否则,因为进度对话框是无模式的,所以会直接显示出来然后隐藏起来。

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

      <InstallUISequence>
        <Show Dialog="CustomProgressDlg" After="ProgressDlg" />
      </InstallUISequence>
    
        2
  •  2
  •   Klaus    14 年前

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

    我试着用这个来解决同一个问题。要使用FeatureTreeUI序列,除了ProgressDlg之外,还必须创建以下对话框的自己版本:

    • 维护Welcomedlg
    • ReSuMeLG
    • 欢迎光临

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

        3
  •  1
  •   Bob Arnson    14 年前

    progressdlg只有在您引用它时才被调度。如果要替换它,请自定义对话序列以不引用progressdlg。

        4
  •  0
  •   burrt    6 年前

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

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

    确保省略了 显示/重写 -这是韦尔科德格的确切情况。