安装与维克斯的字体不是本地字体文件夹(Installing a font with Wix not

2019-08-01 20:46发布

我使用维克斯创建一个网站的安装。

当添加的字体,维克斯对.ttf扩展拿起,并要求您将它安装到本地字体文件夹(当使用目录的编号=“FontsFolder”和TrueType =“是”)。 如果您删除这些属性,它倒了。

有没有办法让维克斯无需抱怨安装的字体,以自定义文件夹(../Content/fonts/)?

编辑:

   <Directory Id="dirFontsFolder" Name="fonts">
       <Component Id="cfont.ttf" Guid="BDEBACC8-D057-4406-87B9-B310BA6DFE27">
           <File Id="font.ttf" Source="$(var.SrcWebsite)\Content\fonts\font.ttf" KeyPath="yes" />
       </Component>
   </Directory>

与上面的代码,我得到的错误:

错误LGHT1076:ICE60:文件font.ttf不是一个字体,它的版本是不是伴随文件引用。 它应该在语言栏中指定的语言。

Answer 1:

后来被提出个月后的问题,我们设法找到了问题:

该解决方案的keyPath是答案的一半(见Alex的答案)。 如果没有使用维克斯的属性的keyPath,下面的解决方案将无法工作。

另一部分则是在内部一致性评价者(ICE),其维克斯贯穿接头(light.exe)包装所述MSI时。 ICE的规则ICE07,检查文件的内容,如果确定该文件是一个字体,将强制在Windows /字体文件。

为了防止这种情况发生,你需要light.exe运行时禁用此规则。 light.exe后参数:要做到这一点,你加-sice。 在我们的例子将是:

light.exe -sice:ICE07

您可以通过添加更多的-sice参数禁用多个规则。



Answer 2:

您可以acheive与VS同样的事情:

右键单击安装项目,然后单击属性。

选择工具的设置选项卡。

在ICE验证部分,您可以抑制所有警告,或特定的一个ICEXX,在这种情况下,

[ICE60]

要么

在同一选项卡(工具设置),则可以在编译器或链接器添加额外的参数。 因此,在连接部分只需添加

[-Sewing:ICE60]



Answer 3:

For the specific case of bootstrap glyphicons_halflings.ttf font which drops into the fonts folder of the website by design this solution works without supressing ICE07 warnings:

Because you will also be installing the matching woff, eot, and svg webfonts at the same time, you can specify that the TTF file has a companion file and is not a TrueType font.

If you naively just create a WiX fragment to add the Halflings font files to your sites fonts folder like this: (replace the partial GUIDs as needed)

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="WebsiteFontsDir">
            <Component Id="CMP_WebsiteFonts" Guid="{********-482C-4924-B06E-9FAC34F89D1D}" KeyPath="yes">
                <File Id="glyphicons_halflings_regular.eot" Source="$(var.ViewerModule.TargetDir)Police\fonts\glyphicons-halflings-regular.eot" />
                <File Id="glyphicons_halflings_regular.svg" Source="$(var.ViewerModule.TargetDir)Police\fonts\glyphicons-halflings-regular.svg" />
                <File Id="glyphicons_halflings_regular.woff" Source="$(var.ViewerModule.TargetDir)Police\fonts\glyphicons-halflings-regular.woff" />
            </Component>
            <Component Id="CMP_WebsiteFonts2" Guid="{********-BFFE-441D-B8F4-156DD596B09F}" KeyPath="yes">
                <File Id="glyphicons_halflings_regular.ttf" Source="$(var.ViewerModule.TargetDir)Police\fonts\glyphicons-halflings-regular.ttf" DefaultVersion="1.001" TrueType="yes" />
            </Component>
     </DirectoryRef>
</Fragment>

It will add the files to the correct location but building your solution will produce an ICE07 validation warning bemoaning the fact that a TTF font file must go in the Windows Font folder.

Given this is a web font and is not supposed to go there that's very annoying, but thankfully because it is a web font you need it in many formats to appease IE, Edge, Chrome, Firefox, etc... that means you can make use of the presence of the non TTF font variants to eliminate the warning.

Refactor the fragment like this:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="WebsiteFontsDir">
            <Component Id="CMP_WebsiteFonts" Guid="{********-482C-4924-B06E-9FAC34F89D1D}" KeyPath="yes">
                <File Id="glyphicons_halflings_regular.eot" Source="$(var.AZViewerModule.TargetDir)fonts\glyphicons-halflings-regular.eot" />
                <File Id="glyphicons_halflings_regular.svg" Source="$(var.AZViewerModule.TargetDir)fonts\glyphicons-halflings-regular.svg" />
                <File Id="glyphicons_halflings_regular.woff" Source="$(var.AZViewerModule.TargetDir)fonts\glyphicons-halflings-regular.woff" />
            </Component>
            <Component Id="CMP_WebsiteFonts2" Guid="{********-BFFE-441D-B8F4-156DD596B09F}">
                <File Id="glyphicons_halflings_regular.ttf" 
                  Source="$(var.ViewerModule.TargetDir)fonts\glyphicons-halflings-regular.ttf" 
                  TrueType="no" 
                  KeyPath="no"
                  CompanionFile="glyphicons_halflings_regular.eot"/>
            </Component>
        </DirectoryRef>
    </Fragment>
</Wix>

Here we deny its a TTF font, and provide it with a companion file that is one of the other web font files. Everything installs where you expect and no ICE07 is produced.



Answer 4:

<Directory Id="WixWorkshop" Name="WixWorkshop">
  <Component Id="Component1" Guid="DE1705EF-B96A-4746-AA9F-2C9D598E7D08">
    <File Id="File1" Name="arial.ttf" Source="arial.ttf" KeyPath="yes"/>
  </Component>
</Directory>

效果很好 - 任何部件应该有参考目录



文章来源: Installing a font with Wix not to the local font folder
标签: fonts wix