使用WiX Toolset动态更改对话框顺序

本文关键字:对话框 顺序 动态 WiX Toolset 使用 | 更新日期: 2023-09-27 18:13:09

我在WiX中构建的安装程序没有固定的对话框流。它基于用户输入。例如,我有一个RadioButton,允许用户配置数据库或暂时跳过它。根据选择,下一个对话框应该是不同的。最好的方法是什么?

我尝试在NewDialog事件的值字段中使用我之前设置的属性,如下所示:

<Publish Event="NewDialog" Value="[NEXTDIALOG]" Order="1">
  1
</Publish>

但是,我后来发现这行不通,因为Value字段不处理格式化的文本,只处理文字。

然后我在谷歌上搜索了一下如何通过c# CustomAction显示一个新对话框的例子,但是没有找到。也许这根本就不是一个选项。

到目前为止唯一有效的选择是使用如下条件:

<Publish Event="NewDialog" Value="Dialog1">
  [NEXTDIALOG] = "Dialog1"
</Publish>
<Publish Event="NewDialog" Value="Dialog2">
  [NEXTDIALOG] = "Dialog2"
</Publish>

,但不知何故,这似乎不是最佳实践。在我看来,基于某些用户输入改变对话框顺序的需求是相当普遍的,所以我希望有一种更原生的方法来实现它。有什么建议吗?

提前感谢!

使用WiX Toolset动态更改对话框顺序

通过设置属性并在Publish事件上检查它来更改对话框的流程是动态更改dailogs流程的正确方法。
但是,您必须保证,如果用户在下一个对话框中单击Back按钮,它必须跳转回用户做出初始选择的对话框。

作为一个开发人员,通常你会选择一个现有的对话集(WixUI_FeatureTree、WixUI_InstallDir、WixUI_Minimal、WixUI_Advanced或WixUI_Mondo),改变流程到你自己喜欢的,并使用那个。

看一下这个WIX页面