Повреждение текста в установщике LLVM 7.0.1 - PullRequest
0 голосов
/ 27 декабря 2018

Я попытался установить llvm 7.0.1 в Windows 10.
Но в установщике есть повреждение текста, как показано ниже.Это усложняет установку.
Как это исправить?

Я использую Windows 10 1809, chcp - 65001.
Я использую японский.

Я включил «Использовать Unicode UTF-8 для поддержки языков во всем мире» в настройках региона ».

Является ли это изменение причиной ошибки? Но установщик другого приложения не является прерыванием текста.

LLVM installer screenshot


Обновление:

Изображение установщика с режимом совместимости (Windows XP SP3) llvm_installer_with_compatibility mode

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Этот установщик LLVM не является установщиком Unicode NSIS.Команда LLVM может исправить это, добавив Unicode True к своему сценарию NSIS.

Этот установщик LLVM выглядит так, как будто он поддерживает несколько языков (я не могу найти его источник, возможно, он использует CMake / Ninja), а NSIS делаетпопытайтесь угадать правильный язык, но это основано на возвращаемом значении GetUserDefaultUILanguage(), а не на активной кодовой странице.

Я не смог воспроизвести вашу проблему в сборке 18290 (после перехода на UTF-8 и перезагрузки я подтвердилчто GetACP() возвращает 65001), но это, вероятно, связано с тем, что NSIS распознает мою систему как английскую.

Основываясь на (N) в вашей кнопке Next на вашем скриншоте, я собираюсь предположить, что ваш язык пользовательского интерфейсаопределяется как китайский или японский?

Без дополнительной информации о вашей системе трудно предположить, является ли это ошибкой в ​​NSIS или Windows.NSIS является относительно нормальным приложением и не вызывает MultiByteToWideChar в своих интерфейсных строках (IIRC).

Редактировать:

Заставив установщика выбрать японский, я могу повторить вашу проблему.Решением этой проблемы является переключение вашего «языка для программ, не поддерживающих Юникод», на японский, если вы хотите установить это приложение, используя японский язык отображения.Другое решение, которое вы можете попробовать, - установить локаль для одного приложения. AppLocale был решением Microsoft для этого, но он не поддерживается в Windows 10, но есть других альтернатив .

При сборке установщика NSIS без поддержки Unicode программа хранит текст внутри как необработанные байты, закодированные с помощью кодовой страницы определенного языка.Во время выполнения он использует такие функции, как SetWindowTextA, чтобы установить текст элементов пользовательского интерфейса.Вот как не-Unicode-приложения работали с незапамятных времен в Windows.Все не-Unicode-программы, которые отображают текст за пределами диапазона ASCII, будут иметь ту же проблему, если только они не были специально написаны для поддержки UTF-8 в качестве активной кодовой страницы (что маловероятно, поскольку это новая функция).Эта функция полезна только для консольных приложений и портированных приложений POSIX, которые предполагают, что узкая строка имеет кодировку UTF-8.

0 голосов
/ 27 декабря 2018

Слишком долго для комментария.


ОБНОВЛЕНИЕ : Глядя на это немного, мне интересно, если проблема в повреждении шрифта.Здесь приведено описание перестройки кэша шрифтов: http://www.trishtech.com/2013/11/rebuild-fonts-cache-windows-8/. Я думаю, вам сначала нужно установить хорошую копию файла шрифта?Вы делаете это, копируя файлы шрифтов в папки Fonts, которые я считаю.Я уточню у Андерса, какой шрифт использует NSIS.

Аналогичная проблема с MSI-файлом: Некрасивый рендеринг шрифтов установщика Windows .


Режим совместимости : довольно уверен, что установка UTF8 вызовет его.Я не думаю, что это сработает, но в первую очередь я бы попытался запустить исполняемый файл в режиме совместимости .

  1. Найдите setup.exe в вопросе.
  2. Щелкните правой кнопкой мыши по EXE, удерживайте правую кнопку мыши нажатой, теперь перетащите в пустую область рабочего стола и отпустите кнопку мыши.Нажмите « Создать ярлык здесь ».
  3. Right click Shortcut => Properties => Compatibilty tab.
  4. Попробуйте различные комбинации " Запустите программу в режиме совместимости для ... "
  5. Я бы попробовал " Windows XP "наивысший пакет обновления первым.Нажмите OK, когда закончите.
  6. Теперь дважды щелкните ярлык, чтобы запустить исполняемый файл и посмотреть, что произойдет.
...