使用WiX Extensions自定义字体

时间:2013-07-10 15:02:56

标签: wix wix-extension

我正在使用Windows Installer XML CommonUi Extension中的Windows服务对话框。

标题文字后面有一个深色的横幅位图,所以我想改变标题字体的颜色。我尝试将其添加到我的.wxs:

  <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="8" Blue="255" Red="255" Green="255" />

这没有扩展,但现在我使用扩展程序我收到此错误:

  

主键'WixUI_Font_Title'在表'TextStyle'中重复。请删除其中一个条目或重命名主键的一部分以避免冲突。

如何更改字体?


编辑:我通过在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>

我正在为这个问题添加一笔赏金,以期找到合适的方法。

1 个答案:

答案 0 :(得分:1)

目前无法覆盖TextStyle元素。要么保留当前的工作方式,要么在MSI后期构建上执行SQL查询以更新WixUI_Font_Title TextStyle条目。

在MSI doc Execute SQL Statements下的MSI上执行SQL的帮助页面(如果安装了WiX,则为doc \ msi.chm)。当然,您可以使用MSI API或DTF而不是脚本。

您的更新语句如下所示:

UPDATE `TextStyle` SET `Color` = 16777215 WHERE `TextStyle` = 'WixUI_Font_Title'

documentation可以在Color列中说明这一点:

The value put in this column should be computed using the following formula: 65536 * blue + 256 * green + red, where red, green, and blue are each in the range of 0-255.