2010-07-21 57 views
3

当我在WiX中创建自定义对话框时,我按照“文本”,“编辑”,“文本”,“编辑”等的顺序放置元素。例如:屏幕阅读器错误顺序的WiX UI元素

<Control Id="NameText" Type="Text" X="25" Y="50" Width="100" Height="10" Text="Enter Name:"/> 
<Control Id="NameEdit" Type="Edit" X="25" Y="60" Width="100" Height="15" Text="jo_bob55"/> 
<Control Id="AgeText" Type="Text" X="25" Y="80" Width="100" Height="10" Text="Enter Age:"/> 
<Control Id="AgeEdit" Type="Edit" X="25" Y="90" Width="100" Height="15" Text="0"/> 
<Control Id="ColorText" Type="Text" X="25" Y="110" Width="100" Height="10" Text="Enter your favorite color:"/> 
<Control Id="ColorEdit" Type="Edit" X="25" Y="120" Width="100" Height="15" Text="red"/> 

然而,当我运行安装程序,并听它在Windows讲述人(或看它与UI间谍),该元素将在订货

  • NameEdit
  • AgeEdit
  • ColorEdit
  • NameText
  • AgeText
  • ColorText

的secondry问题是,如果有一个横幅广告图片(我们称之为BitmapBanner,文本字段程序WixUI_Bmp_Banner),那么我所有的编辑框将在UI间谍被列为“LabledBy”,并讲述会读“WixUI Bmp横幅编辑,WixUI Bmp横幅编辑”多次。看看UI间谍中的其他微星,我似乎不是唯一有这个问题的人(尝试UI间谍中的Steam安装程序语言选择屏幕 - 猜标记名称)。

我想我的问题是:我可以解决这个问题,还是这是WiX 3.0中的错误?

回答

2

我猜测,像Windows讲述人一样的辅助功能软件使用的顺序与控件的Tab顺序相同。 Windows安装程序会从安装程序中的Control tableControl_Next列读取此订单。

Control element文档来看,它看起来像维克斯没有一个XML属性明确设置此Control_Next字段中的值(虽然你可以使用TabSkip属性,迫使它是空的)。

我会用Orca打开MSI文件,并查看Control表的Control_Next列。如果您可以确认这些值不符合预期顺序,那么至少您知道问题在于wix。

您可能还想看看Windows Installer的Accessibility文档。

+0

我投票了,如果我有足够的信誉来这样做。 我在Orca中检查了.msi,但元素是在右边的顺序。但是,如果我转到Dialog Preview,并在UI Spy中查看结果,那么订单会再次混乱。哎呀,在Orca,我的编辑框的文字说明甚至是正确的。这可能没有解决办法,methinks。 – Chris65536 2010-07-22 08:23:48

0

我报同一类型的问题对威克斯团队在这里: http://sourceforge.net/tracker/index.php?func=detail&aid=2902901&group_id=105970&atid=642717

的威克斯团队告诉我,这是一个MSI的问题,我已经验证了这一点。

我继续提交错误报告,微软在这里: https://connect.microsoft.com/VisualStudio/feedback/details/652381/windows-installer-msi-engine-incorrectly-sets-the-ui-automation-name-property-of-edit-controls-in-dialogs

+0

作为一种解决方法,我必须通过其索引找到控件。 – 2011-04-15 20:28:24