在我的[run]
部分中,此条目:
Filename: "{win}\hh.exe"; \
Parameters: "{app}\MeetSchedAssist.chm::/msa-revision-history.htm"; \
WorkingDir: "{app}"; \
Flags: nowait postinstall runmaximized; \
Description: "{cm:ViewChangeHistory}"
当我使用英语运行安装程序时,它看起来不错:
用户刚刚录制了将视频安装在日语计算机上的视频:
有两个问题:
英语自定义消息文件(UTF-8编码)具有
English.ViewChangeHistory=View Change History
日语自定义消息文件(UTF-8编码)具有:
Japanese.ViewChangeHistory=変更履歴を表示
为什么显示不正确?我正在使用Inno Setup Unicode的最新版本。我知道用户正在使用Ultra HD监视器。
此外,我正在重新构建运行列表,如下所示:
type
TRunEntry = record
Caption: string;
Checked: Boolean;
Object: TObject;
end;
procedure RebuildRunList;
var
RunEntries: array of TRunEntry;
I: Integer;
begin
// Save run list ...
SetArrayLength(RunEntries, WizardForm.RunList.Items.Count);
for I := 0 to WizardForm.RunList.Items.Count - 1 do
begin
RunEntries[I].Caption := WizardForm.RunList.ItemCaption[I];
RunEntries[I].Checked := WizardForm.RunList.Checked[I];
RunEntries[I].Object := WizardForm.RunList.ItemObject[I];
end;
// ... clear it ...
WizardForm.RunList.Items.Clear;
// ... and re-create
for I := 0 to GetArrayLength(RunEntries) - 1 do
begin
// the first three entries are radio buttons
if (I = 0) or (I = 1) or (I = 2) then
begin
WizardForm.RunList.AddRadioButton(
RunEntries[I].Caption, '', 0, RunEntries[I].Checked, True, RunEntries[I].Object);
end
else
begin
WizardForm.RunList.AddCheckBox(
RunEntries[I].Caption, '', 0, RunEntries[I].Checked, True, True, True,
RunEntries[I].Object);
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpFinished then
begin
// Only now is the RunList populated.
// Two entries are on 64-bit systems only.
if IsWin64 then RebuildRunList;
end;
end;
我注释掉了重建运行列表的代码,它在我的PC上没有任何影响:
但是,蒙皮可以正常工作。因此,按钮位置问题必须与使用超高清配置和/或缩放文本的用户相关。
然后,我注释掉了外观代码,然后在PC上再次尝试。没有变化:
我真的不明白为什么会这样!
我加入了这样的自定义消息:
[CustomMessages]
#include AddBackslash(SourcePath) + ".\l.jpn\CustomMessagesJapanese.txt"
答案 0 :(得分:1)
这取决于您添加文字的方式。
根据http://www.jrsoftware.org/ishelp/topic_unicode.htm,在UTF-8中保存ISL文件是非法的。
您必须将其另存为ANSI编码,并使用文件中指定的代码页进行编码。
或者,您也可以在本地[Messages]或[CustomMessages]部分中直接使用Language.Key值,直接在iss文件中使用UTF-8字符串,如下所示:
[CustomMessages]
English.ViewChangeHistory=View Change History
Japanese.ViewChangeHistory=変更履歴を表示
您还可以#include使用相同格式的外部文件。
在两种情况下(无论是直接在iss文件中还是在#included文件中),都需要确保使用BOM将文件保存为UTF-8。