Wix:ListBox值限制

时间:2012-02-15 12:36:08

标签: listbox wix windows-installer

ListBox表中的值字段具有String [64]类型。是否有可能扩展这个64个字符的限制?我需要在那里存储一些目录路径。

1 个答案:

答案 0 :(得分:1)

在WiX中可能(从未尝试过)覆盖ListBox表的默认架构。我知道在InstallShield中我只是转到直接编辑器并进行调整。 WiX有一个用于构建MSI的模板架构,您可以使用Table元素重新定义它。或者它可能只是给您一条错误消息,说明您正在定义一个众所周知的表。

但是,如果超过64个字符,我不确定ListBox控件中是否会有任何副作用。我没有在MSI SDK中看到任何说明允许的内容,所以我猜你的milage可能会有所不同。

这是你可能会喜欢的技巧。它被称为邪恶的双胞胎对话技巧。请参阅,在MSI中,有一个错误,即UI元素不能很好地刷新,这个技巧可以解决它。考虑一下:

Dialog1与ListBox关联到属性TESTPROP和Items One值1和2值2。 显示[TESTPROP]的文本标签。

启动对话框后,单击列表框中的行后,文本标签为空。单击后退和下一步,突然显示预期的文本1和2.

现在创建一个这个对话框的克隆(Dialog2)并在dialog1的Listbox上放置一个控件事件,说明NewDialog Dialog2 condition = 1并在dialog2的Listbox上放一个控件事件,说明NewDialog Dialog1 condition = 1

现在,当你运行它时,屏幕会刷新(虽然有一个大的丑陋的闪烁)看起来它看起来像是同一个对话框只是它真的是正在转换到的邪恶双胞胎对话框,以便数据正确刷新。

现在要获得额外的功劳,请使用自定义操作来执行此类操作

ListBox项目1文本C:\ Pro ... Foo \ Bob值LISTBOXDIRPROP1 ListBox项目2文本C:\ Pro ... Foo \ Ed值LISTBOXDIRPROP2

属性LISTBOXDIRPROP1 = C:\ Program Files \ Foo \ Bob 属性LISTBOXDIRPROP2 = C:\ Program Files \ Foo \ Ed

然后设置TextLabel以显示[[TESTPROP]]。这告诉它得到属性值的值。换句话说,TESTPRO = LISTBOXDIRPROP1 = C:\ Proggram Files \ Foo \ Bob

这个技巧将允许您显示符合64字符约束的行,但在用户选择它时会提供其他信息。