当我在自定义对话框中使用属性密码设置为“是”的控件编辑时
<Control Id="TextBoxPass" Type="Edit" Password="yes" Property="SQLPASSWORD">
Windows Server 2012 中的文本框有双框。在其他版本的 Windows Server(2008、2008R2、2003)中,它看起来像普通的文本框。我怎样才能改变这种行为?(我的意思是删除双帧)
当我在自定义对话框中使用属性密码设置为“是”的控件编辑时
<Control Id="TextBoxPass" Type="Edit" Password="yes" Property="SQLPASSWORD">
Windows Server 2012 中的文本框有双框。在其他版本的 Windows Server(2008、2008R2、2003)中,它看起来像普通的文本框。我怎样才能改变这种行为?(我的意思是删除双帧)
快速回答:AFAIK,你不能改变这种行为。
长答案:如果您运行 Microsoft Spy++ 并搜索这两个控件,您将看到常规编辑的类是RichEdit20W
,而密码是Edit
。
然后检查窗口样式,您会发现WS_BORDER
. 这是边界的罪魁祸首。在 WiX 和 MSI 中,没有办法对控件的窗口样式进行编码,所以我认为这个问题没有解决方案。
此外,可以使用 Orca 更改某些样式(如 ES_PASSWORD)并编辑 table 中的Attributes
列Control
。解决方案是将两个编辑都设置为密码,并在构建后手动Attributes
将非密码控件的设置编辑为196611
.
如果您想自动化此过程,我认为您可以使用 MSI API 编写应用程序来对包执行查询并更改值。
这是一个真实的例子: