wix - 使用 WiX 扩展自定义字体

标签 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" />

这可以在没有扩展的情况下工作,但现在我使用扩展时出现此错误:

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/

相关文章:

wix - 是否可以同时只运行一个 WiX msi 实例?

powershell - 安装其他安装程序?

c# - 包含许多子文件夹和文件的 WiX 安装程序

WIX 在自定义操作中编辑二进制文件

WIX Office 检测扩展

c# - 使用 Wix Bootstrapper (Burn) 安装 .NET 可再发行组件

wix - 错误 0x8007007a : failed to copy XmlConfig record Id

.net - 坚持使用 WiX Bootstrap ;它给出了 "Error 0x80070643: Failed to install MSI package"

wix - RegistrySearch 与 util :RegistrySearch in Burn

WIX 启用 Windows 功能