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

时间:2016-10-14 13:07:32

标签: c# wix

我在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>

但不知何故,这似乎不是最好的做法。在我看来,需要根据一些用户输入更改对话框的顺序,这是非常常见的,所以我希望有一种更原生的方法。有什么建议吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

通过设置属性并在发布事件 IS 上检查它来改变对话框的流程,这是动态更改dailog流量的正确方法。
但是,您必须保证,如果用户单击下一个对话框上的“后退”按钮,则必须跳回到用户初始选择的对话框。

作为开发人员,通常你会选择一个现有的对话框集(WixUI_FeatureTree WixUI_InstallDir,WixUI_Minimal,WixUI_Advanced或WixUI_Mondo),根据自己的喜好改变流程并改用它。

请查看此WIX页面。