2013-04-17 2 views
4

Я добавил файл в свой скрипт WiX с символом «î» в названии пути. Light.exe будут жаловаться:WiX Installer heat.exe и non-ascii filenames

Строка была представлена ​​с символами, которые не доступны в указанной кодовой страницы базы данных «1252»

Характер в вопросе 0xEE в Windows-1252 кодировку, что is, 0x00EE Unicode или 0xC3AE в UTF-8. Эти файлы находятся в файле wxs, сгенерированном heat.exe, и этот xml кодируется как UTF-8.

Я предполагаю, что сообщение об ошибке исходит из того, что он пытается ввести символ в кодировке UTF, а база данных - 1252? Поскольку UTF на самом деле не поддерживается установщиком Windows (как описано в WiX documentation), следует ли использовать входной XML-код, закодированный в 1252 или iso-8859? Если да, могу ли я сказать heat.exe использовать другую кодировку для вывода?

Мой вопрос похож на этот один: Leveraging heat.exe and harvest already localized file names and including them to msi using wix, но разница в том, что в этом случае символы «истинный» не-ANSI charcaters, в моем случае характер может быть закодирован правильно в 1252, но это, кажется, преобразование из входных файлов utf-8 не работает.

ответ

1

WiX набор инструментов проверяет кодовые страницы, как это (примерно):

encoding = Encoding.GetEncoding(codepage, new EncoderExceptionFallback(), 
              new DecoderExceptionFallback()); 
writer = new StreamWriter(idtPath, false, encoding); 
try 
{ 
    // GetBytes will throw an exception if any character doesn't 
    // match our current encoding 
    rowBytes = writer.Encoding.GetBytes(rowString); 
} 
catch (EncoderFallbackException) 
{ 
    rowBytes = convertEncoding.GetBytes(rowString); 

    messageHandler.OnMessage(WixErrors.InvalidStringForCodepage(
           row.SourceLineNumbers, 
           writer.Encoding.WindowsCodePage)); 
} 

Вполне возможно, что NETFX не перевод, что «я» правильно. Явная установка кодовой страницы на ваш XML может помочь. Чтобы сделать это с помощью тепла, вы можете попробовать использовать XSLT (я никогда не пробовал изменять кодовую страницу XML doc через XSL, но это кажется возможным) или после редактирования документа.

Смежные вопросы