Installing a font with Wix not to the local font folder

fonts, wix

Solution

After the issue being raised months later we managed to find the issue:

The KeyPath solution was half of the answer (See Alex's Answer). Without using the KeyPath attribute in WiX, the below solution will not work.

The other part is the Internal Consistency Evaluators (ICE) that WiX runs through Linker (light.exe) when packaging the MSI. The ICE rule ICE07, checks the contents of the files, and if it determines that the file is a font, will force the file in Windows/Fonts.

To stop this happening, you need to disable this rule when light.exe runs. To do this, you add the -sice: parameter after light.exe. For our example it would be:

light.exe -sice:ICE07

You can disable multiple rules by adding more -sice parameters.

Problem

I am using Wix to create an installation for a website. When adding a font, WiX picks up on the .ttf extension and requires you to install it to the local Font folder (When using a Directory Id="FontsFolder" and TrueType="yes"). If you remove these attributes, it falls over. Is there a way to get WiX to install the fonts to a custom folder (../Content/fonts/) without complaining? EDIT: ``` <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> ``` With the above code, I get the error: error LGHT1076 : ICE60: The file font.ttf is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column.

Original source