2

当我在自定义对话框中使用属性密码设置为“是”的控件编辑时

<Control Id="TextBoxPass" Type="Edit" Password="yes" Property="SQLPASSWORD">

Windows Server 2012 中的文本框有双框。在其他版本的 Windows Server(2008、2008R2、2003)中,它看起来像普通的文本框。我怎样才能改变这种行为?(我的意思是删除双帧)

2012年密码文本框双框

4

1 回答 1

2

快速回答:AFAIK,你不能改变这种行为。

长答案:如果您运行 Microsoft Spy++ 并搜索这两个控件,您将看到常规编辑的类是RichEdit20W,而密码是Edit

然后检查窗口样式,您会发现WS_BORDER. 这是边界的罪魁祸首。在 WiX 和 MSI 中,没有办法对控件的窗口样式进行编码,所以我认为这个问题没有解决方案。

此外,可以使用 Orca 更改某些样式(如 ES_PASSWORD)并编辑 table 中的AttributesControl。解决方案是将两个编辑都设置为密码,并在构建后手动Attributes将非密码控件的设置编辑为196611.

如果您想自动化此过程,我认为您可以使用 MSI API 编写应用程序来对包执行查询并更改值。

这是一个真实的例子:

两个编辑控件,一个没有 ES_PASSWORD 样式。

于 2015-05-28T18:00:48.950 回答