Юникод в Inno Setup

Jonnik
Дата: 06.06.2019 14:44:28
Использую Inno Setup 6.0.2 (u)

Проблема в том, что если в системе нет русских шрифтов, то информация по лицензии отображается иероглифами.
К примеру я загружаю текст лицензии из файла Licenze.txt и на русской системе все хорошо, но на других иероглифы.
Я взял пересохранил этот файл в UTF-8 и теперь у меня на русской системе то же иероглифы.

Картинка с другого сайта.

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

Вот мой код инсталятора.

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "NameApplProg"
#define MyAppVersion "1.7.5"
#define MyAppPublisher "Soft Comp"
#define MyAppURL "https://soft.ru/"
#define MyAppURLVideo "https://soft.ru/video/"
#define MyAppExeName "ApplProg.exe"   

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{55DE6285-97A9-4844-9D3B-ADAEAFB411E9}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
LicenseFile=C:\Work\Project\NameApplProg\Install\Licenze.txt
InfoBeforeFile=C:\Work\Project\NameApplProg\Install\Перед установкой.txt
InfoAfterFile=C:\Work\Project\NameApplProg\Install\После установки.txt
OutputDir=C:\Work\Project\NameApplProg\Install\
OutputBaseFilename=NameApplProg
SetupIconFile=C:\Work\Project\NameApplProg\Install\icon.ico
Compression=lzma2
SolidCompression=yes

[Languages]
Name: russian; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Files]
Source: "C:\Work\Project\TManufacture\Install\NameApplProg.exe"; DestDir: "{app}"; Flags: ignoreversion
;Source: "C:\Work\Project\TManufacture\Install\Update.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]  
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\Видео уроки"; Filename: "{#MyAppURLVideo}"; Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
Name: "{group}\Удалить {#MyAppName}"; Filename:"{uninstallexe}";      

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[LangOptions]
LanguageID=$0419
wadman
Дата: 06.06.2019 15:00:58
Jonnik
Проблема в том, что если в системе нет русских шрифтов, то информация по лицензии отображается иероглифами.

Логично... Для такого случая предоставляется файл лицензии на языке, который установлен в системе, либо на английском. В инно есть для этого штатные механизмы.

+
Либо пусть установщик ставит шрифты перед запуском и отправляет пользователя на курсы русского языка. :)
Jonnik
Дата: 06.06.2019 15:11:26
wadman
Jonnik
Проблема в том, что если в системе нет русских шрифтов, то информация по лицензии отображается иероглифами.

Логично... Для такого случая предоставляется файл лицензии на языке, который установлен в системе, либо на английском. В инно есть для этого штатные механизмы.

+
Либо пусть установщик ставит шрифты перед запуском и отправляет пользователя на курсы русского языка. :)


Юникод - это когда не надо с файлами играться. Вдруг там язык неправильно определится и что будут тоже куча иероглифов?
Если надо будет на нескольких языках, то тогда и буду делать несколько переводов. А так я хочу, что бы не важно какой язык в системе, то инсталятор нормально все показывал.
ёёёёё
Дата: 06.06.2019 15:12:56
Jonnik,

ну, картинку показывай.
wadman
Дата: 06.06.2019 15:18:36
Jonnik,

попробуй вместо текстового файла подсунуть rtf.
_Vasilisk_
Дата: 06.06.2019 15:49:18
Jonnik
пересохранил этот файл в UTF-8
А в UTF-16 с BOM?
Dimitry Sibiryakov
Дата: 06.06.2019 15:56:12

Jonnik
если в системе нет русских шрифтов

А такое бывает? Вроде как подмена шрифтов при смене языка кончилась сразу после ХР. Ты
Инно взял юникодный вообще?

Posted via ActualForum NNTP Server 1.5

Dimitry Sibiryakov
Дата: 06.06.2019 16:05:49

_Vasilisk_
А в UTF-16 с BOM?

Лучше бы ему всё же документацию почитать...
•Unicode Inno Setup uses the existing ANSI .isl language files and you should not
and may not convert these to Unicode or anything similar since it does so automatically
during compilation using the LanguageCodePage setting of the language. However, you do
need to convert existing [Messages] and [CustomMessages] entries in your .iss files to
Unicode if the language used a special LanguageCodePage.
•The automatic conversion is also done for any language specific plain text ANSI
LicenseFile, InfoBeforeFile, or InfoAfterFile used so you should not convert these either
(but you may do so if you wish anyway, unlike ANSI .isl language files).

Posted via ActualForum NNTP Server 1.5

Кроик Семён
Дата: 07.06.2019 11:02:21
Jonnik,

вот если бы можно было бы показать RTF файл вместо TXT ....
Кроик Семён
Дата: 07.06.2019 11:05:09
P.S.

и правда, есть такое:

===============================
http://www.jrsoftware.org/ishelp/index.php?topic=setup_licensefile
Description:

Specifies the name of an optional license agreement file, in .txt or .rtf (rich text) format, which is displayed before the user selects the destination directory for the program. This file must be located in your installation's source directory when running the Setup Compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the Compiler directory.

If the user selects a language for which the LicenseFile parameter is set, this directive is effectively ignored. See the [Languages] section documentation for more information.
Example:

LicenseFile=license.txt