我正在使用 Windows Installer XML CommonUi Extension 中的 Windows 服务对话框.
我在标题文本后面有一个深色横幅位图,所以我想更改标题字体的颜色。我尝试将其添加到我的 .wxs 中:
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="8" Blue="255" Red="255" Green="255" />
这可以在没有扩展的情况下工作,但现在我使用扩展时出现此错误:
The primary key 'WixUI_Font_Title' is duplicated in table 'TextStyle'. Please remove one of the entries or rename a part of the primary key to avoid the collision.
如何更改字体?
编辑:我通过向 UI 部分添加 TextStyle 来解决这个问题,如下所示:
<TextStyle Id="My_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" Blue="255" Red="255" Green="255" />
然后将自定义字符串添加到 .wxl
文件中,该文件使用相同的文本但也使用字体设置覆盖原始文件。
<String Id="ProgressDlgTitleInstalling">{\My_Font_Title}Installing [ProductName]</String>
<String Id="ProgressDlgTitleChanging">{\My_Font_Title}Changing [ProductName]</String>
<String Id="ProgressDlgTitleRepairing">{\My_Font_Title}Repairing [ProductName]</String>
<String Id="ProgressDlgTitleRemoving">{\My_Font_Title}Removing [ProductName]</String>
我正在为这个问题添加悬赏,希望找到正确的方法。
最佳答案
目前无法覆盖 TextStyle
元素。要么保留当前的处理方式,要么在 MSI 后期构建上执行 SQL 查询来更新 WixUI_Font_Title TextStyle 条目。
MSI 文档(doc\msi.chm,如果您安装了 WiX)中的执行 SQL 语句
下有一个关于在 MSI 上执行 SQL 的帮助页面。当然,您可以使用 MSI API 或 DTF 来代替脚本。
您的更新语句将类似于:
UPDATE `TextStyle` SET `Color` = 16777215 WHERE `TextStyle` = 'WixUI_Font_Title'
documentation Color
列中有这样的说法:
应使用以下公式计算此列中的值:65536 * 蓝色 + 256 * 绿色 + 红色,其中红色、绿色和蓝色均在 0-255 范围内。
关于wix - 使用 WiX 扩展自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574141/