Использование heat.exe и сбор уже локализованных имен файлов и включение их в msi с помощью wix

У меня вопрос, выполнимо ли то, что я пытаюсь сделать, и если да, то как это сделать.

Я новичок в wix и немного читал о том, как динамически включать папку в установщик, и в конечном итоге я смог выполнить задачу в nant, которая использует heat.exe для создания файла wxs, а затем добавляет вновь созданный файл wxs в световые и свечные задания. Это позволило мне добавить содержимое папки в msi и впоследствии установить эту папку и ее содержимое.

Моя проблема начинается с того момента, когда папка, которую я добавляю в msi, содержит файлы, имена которых уже локализованы (это требование).

Когда я добавляю в структуру каталогов файл, имя которого, например, на русском языке, а не кодовая страница 1252, я получаю сообщение об ошибке:

[exec] ...... Templates.wxs (65): ошибка LGHT0311: строка содержит символы, которые недоступны в указанной кодовой странице базы данных '1252'. Либо измените эти символы на те, которые существуют на кодовой странице базы данных, либо обновите кодовую страницу базы данных, изменив один из следующих атрибутов: Product / @ Codepage, Module / @ Codepage, Patch / @ Codepage, PatchCreation / @ Codepage или WixLocalization. / @ Кодовая страница.

Я попытался установить Product/@Codepage в 65001 (UTF-8), но это не решило проблему.

В конце концов, я хочу иметь возможность добавлять папку и ее содержимое в установщик, а кто-то другой добавляет любое количество файлов, имена которых локализованы в этой папке. Таким образом, всякий раз, когда запускается сборка и происходит последующее создание msi, msi будет содержать эту папку и ее содержимое.

Заранее большое спасибо.


person Алексей    schedule 28.08.2012    source источник
comment
Когда вы говорите, что проблема не решена, что вы имеете в виду? Сообщение об ошибке осталось прежним?   -  person Yan Sklyarenko    schedule 29.08.2012
comment
Да, Ян, как только я меняю кодовую страницу проекта на 65001 и пытаюсь создать msi, я получаю ту же ошибку   -  person Алексей    schedule 29.08.2012


Ответы (1)


Вот что говорит WiX.chm о настройке кодовой страницы базы данных MSI:

Вы можете установить для этого действительную кодовую страницу Windows целым числом, например 1252, или веб-именем, например Windows-1252. UTF-7 и UTF-8 официально не поддерживаются из-за проблем с пользовательским интерфейсом. Юникод не поддерживается.

Пока у вас будут файлы с именами на разных языках, то есть таблица файлов не поместится на одной кодовой странице Windows, у вас очень мало выбора. Утверждается, что UTF-8 официально не поддерживается, и это оставляет надежду.

Если вы установите для атрибута CodePage элемента Product значение UTF-8, он будет успешно построен. И вы можете без проблем установить / удалить полученный MSI. Я немного поигрался с ним и не сталкивался ни с какими «проблемами интерфейса», упомянутыми в этом предупреждении выше.

Кроме того, я немного погуглил эту тему и обнаружил, что InstallShield позволяет установить кодовую страницу базы данных MSI в UTF-8, , что отражено в их документах (найдите на этой странице "utf-8"). Они могут больше сказать о потенциальных проблемах с интерфейсом:

Однако в некоторых сценариях возникают проблемы с пользовательским интерфейсом. Например, если конечный пользователь указывает параметр командной строки / qb или удаляет продукт из «Установка и удаление программ», установщик Windows использует очень мелкие шрифты для отображения текста пользовательского интерфейса в базе данных UTF-8.

Они также хотят оставаться в безопасности, поэтому по умолчанию этот параметр равен false (без UTF-8, только ASCII).

Итак, наконец, что бы я сделал в вашей ситуации?

  • если это строгое требование к установочному пакету, используйте UTF-8 в качестве кодовой страницы
  • протестировать все возможные сценарии (установка / удаление / восстановление / обновление / и т. д.) на всех возможных комбинациях, связанных с локализацией (английская ОС, неанглийская ОС, различные комбинации текущей культуры и пользовательского интерфейса культуры)
  • если вы столкнетесь с этими призрачными "проблемами интерфейса", покажите их своим заинтересованным сторонам, решите, можно ли с этим жить, и опубликуйте известные проблемы, если вы это сделаете.
  • в противном случае, переработайте эту идею и просто поблагодарите свою жизнь за возможность повысить свои навыки в этой области :)

Надеюсь это поможет.

person Yan Sklyarenko    schedule 03.10.2012
comment
У меня сработало нормально. Просто изменил wixlocalization @ CodePage на UTF-8 в соответствующем файле wxl. - person DTdev; 04.07.2013