2

setup.exe の実行時にユーザーが 4 つの言語から選択できるようにする INNO 用のビルド (*.iss) ファイルがあります。ユーザーが選択した言語を Windows レジストリ (または setup.exe があるファイル) に保存したいと考えています。これは、インストールされたプログラムへの入力として使用されます。インストールされたプログラムは、メニュー項目/メッセージに使用される言語を、ユーザーが選択した言語に動的に変更します。

INNO *.iss ファイルでこのタスクを実行するにはどうすればよいですか?

4

1 に答える 1

4

{language}定数によって与えられた値を格納できます。選択された言語識別子名 (セクション エントリのNameパラメータで指定された名前) を返します。[Languages]たとえば、次のスクリプトは、指定されたレジストリ キーに (ユーザーが選択した言語に応じて)enまたはnl値を格納します。

[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 に答える