2

我有一个 INNO 的 Build (*.iss) 文件,它使用户可以在执行 setup.exe 时在 4 种语言之间进行选择。我希望将用户选择的语言保存在 Windows 注册表中(或 setup.exe 所在的文件中)。这将用作已安装程序的输入。然后,安装的程序将动态地将用于菜单项/消息的语言更改为用户选择的语言。

如何在 INNO *.iss 文件中完成这项任务?

4

1 回答 1

4

您可以存储常量给出的{language}值。它返回选定的语言标识符名称(由节条目的Name参数指定的名称)。[Languages]例如,以下脚本将存储ennl值(取决于用户选择的语言)到指定的注册表项:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName=My Program

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"

[Registry]
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Language"; ValueData: "{language}"

在代码中,您可以查询该函数,该函数返回与常量ActiveLanguage相同的语言标识符。{language}要在安装完成后以您提到的形式将此标识符存储到文本文件中,您可以使用以下代码:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName=My Program

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "de"; MessagesFile: "compiler:Languages\German.isl"

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  S: string;
begin
  if CurStep = ssPostInstall then
  begin
    S := Format('language = "%s"', [ActiveLanguage]);
    SaveStringToFile('C:\File.txt', S, False);
  end;
end;
于 2013-11-13T17:51:19.347 回答