Я пробовал установить llvm 7.0.1 на Windows 10.
Но в программе установки поврежден текст, как показано ниже.
Это усложняет установку.
Как мне это исправить?
Я использую Windows 10 1809, chcp - 65001.
Я использую японский язык.
Я включил «Использовать Unicode UTF-8 для поддержки языков по всему миру» в настройках региона ».
Это изменение является причиной ошибки? Но установщик другого приложения не искажает текст.
Изображение установщика с режимом совместимости (Windows XP SP3)

Вам удалось решить эту проблему?





Too long for a comment.
ОБНОВИТЬ: Глядя на это немного, мне интересно, связана ли проблема с повреждением шрифта. Здесь есть описание восстановления кеша шрифтов: http://www.trishtech.com/2013/11/rebuild-fonts-cache-windows-8/. Я думаю, вы должны сначала установить хорошую копию файла шрифта? Вы делаете это, копируя файлы шрифтов в папки Fonts, я полагаю. Я уточню у Андерса, какой шрифт использует NSIS.
Аналогичная проблема с файлом MSI: Уродливый рендеринг шрифтов установщика Windows.
Режим совместимости: Я уверен, что это вызовет параметр UTF8. Не думаю, что это сработает, но первое, что я попробую, - это запустить исполняемый файл в режим совместимости.
setup.exe.Right click Shortcut=>Properties=>Compatibilty таб.OK.Я попытался восстановить кеш шрифтов, но проблема не устранена.
Возможно, попробуйте войти в систему как другой пользователь и повторите попытку установки.
Этот установщик LLVM не является установщиком Unicode NSIS. Команда LLVM может исправить это, добавив Unicode True в свой сценарий NSIS.
Этот установщик LLVM выглядит так, как будто он поддерживает несколько языков (я не смог найти его источник, возможно, он использует CMake / Ninja), и NSIS пытается угадать правильный язык, но это основано на возвращаемом значении GetUserDefaultUILanguage(), а не на активной кодовой странице.
Мне не удалось воспроизвести вашу проблему в сборке 18290 (после перехода на UTF-8 и перезагрузки я подтвердил, что GetACP() возвращает 65001), но, вероятно, это связано с тем, что моя система определяется NSIS как английская.
Основываясь на (N) в вашей кнопке «Далее» на скриншоте, я собираюсь предположить, что ваш язык пользовательского интерфейса определяется как китайский или японский?
Без дополнительной информации о вашей системе трудно предположить, является ли это ошибкой в NSIS или Windows. NSIS - это относительно нормальное приложение, которое не вызывает MultiByteToWideChar в своих интерфейсных строках (IIRC).
Редактировать:
Заставив установщика выбрать японский язык, я могу воспроизвести вашу проблему. Решение этой проблемы - переключить ваш «язык для программ, не поддерживающих Юникод» обратно на японский, если вы хотите установить это приложение, используя японский язык в качестве языка отображения. Еще одно решение, которое вы можете попробовать, - установить языковой стандарт для одного приложения. AppLocale был решением Microsoft для этого, но он не поддерживается в Windows 10, но есть другие альтернативы там.
При создании установщика NSIS без поддержки Unicode программа сохраняет текст внутри как необработанные байты, закодированные с помощью кодовой страницы определенного языка. Во время выполнения он использует такие функции, как SetWindowTextA, для установки текста элементов пользовательского интерфейса. Вот как с незапамятных времен работали в Windows приложения, не поддерживающие Юникод. Все программы, не поддерживающие Unicode, отображающие текст вне диапазона ASCII, будут иметь ту же проблему, если только они не были специально написаны для поддержки UTF-8 в качестве активной кодовой страницы (что маловероятно, поскольку это новая функция). Эта функция полезна только для консольных приложений и перенесенных приложений POSIX, которые предполагают, что узкая строка имеет кодировку UTF-8.
Привет, Андерс, пожалуйста, проверьте мой обновленный ответ. Может дело в испорченных шрифтах? Какой шрифт использует NSIS по умолчанию?
@ SteinÅsmul Шрифт зависит от языка пользовательского интерфейса пользователя (посмотрите программу установки в Resource Hacker, чтобы увидеть ресурсы диалогового окна).
Я использую японский язык.
Вы пытались запустить установщик в режиме совместимости, как предложено ниже? Любопытно, делает ли это что-нибудь.
Я пробовал установить в режиме совместимости. Но так же, как и в случае без режима совместимости.
Возможно, эта проблема вызвана инструментом создания установщика, который использовался для установщика. NSIS (Nullsoft Scriptable Install System) похоже не поддерживает UTF-8.