Кажется, файл, который вы пытаетесь выполнить, представляет собой кодированный текстовый файл в формате Unicode (UTF-16LE) Windows.
Вы можете использовать Командную строку iConv и преобразовать свой файл в кодированный файл Windows UTF-8.
LoadStringFromFile
Support Function не загружает строки Unicode и поддерживает только загрузку кодированных текстовых файлов ANSI и UTF-8.
Отладочный выход компилятора Inno Setup перестает регистрировать текстовый файл, так как находит символ, который он не может загрузить (NULL), и именно поэтому вы получаете только «E» в отладочном выходе компилятора, даже LoadStringFromFile
загружает текстовый файл полностью.
необходимо загрузить программу установки в Iconv, как показано ниже, чтобы получить Iconv исполняемый файл и некоторые библиотеки DLL используется для преобразования между кодировки символов.

После загрузки, установки gnuwin32 (LibIconv для Windows) и перейдите в папку установки.
Скопируйте следующие четыре файла внутри подкаталога в установочной папке под названием «bin».
Они:
libcharset1.dll
libiconv2.Dll
iconv.exe
libintl3.dll
скопировать эти файлы в каталог, где хранятся файлы вашего проекта установки Inno.
Затем используйте следующий код для преобразования.
[Files]
Source: "libcharset1.dll"; Flags: dontcopy
Source: "iconv.exe"; Flags: dontcopy
Source: "libiconv2.dll"; Flags: dontcopy
Source: "libintl3.dll"; Flags: dontcopy
[Code]
function InitializeSetup(): Boolean
var
ErrorCode: Integer;
begin
ExtractTemporaryFile('iconv.exe');
ExtractTemporaryFile('libcharset1.dll');
ExtractTemporaryFile('libintl3.dll');
ExtractTemporaryFile('libiconv2.dll');
ShellExec('Open', ExpandConstant('CMD.exe'), ExpandConstant('/C iConv -f UTF-16LE -t UTF-8 < SKINRESOURCE-INFO.inf > SKINRESOURCE-INFO-ANSI.inf'), ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, ErrorCode);
DeleteFile(ExpandConstant('{tmp}\SKINRESOURCE-INFO.inf'));
Теперь LoadStringFromFile
должен загрузить текстовый файл правильно, так как теперь он имеет UTF-8 кодировке Windows.
Вы также можете зарегистрировать его после преобразования его в строку Unicode, например Log(String(RESOURCE_INFO))
, если вы используете Unicode Inno Setup.
Спасибо! Работает как Очарование! – Blueeyes789
1) Почему ANSI? Таким образом вы теряете символы Unicode. Используйте UTF-8! 2) Обратите внимание, что ANSI не совпадает с Windows-1252. Кодировка ANSI отличается от конфигурации Windows. Поэтому, если вы явно конвертируете в Windows-1252, но вы загружаете файл с использованием настроенной кодировки ANSI, вы получаете беспорядок, если только файл не использует только символы ASCII. 3) Вы можете [использовать PowerShell для преобразования кодировки] (http://stackoverflow.com/a/4817683/850848), нет необходимости в стороннем инструменте. Но в любом случае вам не нужен какой-либо внешний инструмент. Вы можете преобразовать это в скрипт Pascal. –
@MartinPrikryl исправлено до UTF-8. Я забыл PowerShell. :-( – GTAVLover