如何在Inno Setup中将LanguageID写入注册表?

问题描述 投票:0回答:1

我有3种语言,所以我写这个:

Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; ValueName: "LocaleID"; ValueData: "?"; Languages: en
Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; ValueName: "LocaleID"; ValueData: "?"; Languages: ru
Root: HKLM; Subkey: "SOFTWARE\Company\Office4\Client"; ValueType: dword; ValueName: "LocaleID"; ValueData: "?"; Languages: ua

ValueData字段中,我必须放置相应的LanuageID。我可以手动输入这些数字,但是我想知道是否有一种方法可以从其名称或名称中提取LanguageID。

registry inno-setup id language
1个回答
0
投票

您可以使用preprocessor同时生成[Languages][Registry]条目。预处理器具有ReadIni function,可用于从ReadIni文件中读取LanguageID

.isl

这将生成这样的代码(将换行和空行添加到可读性中:]

#define AddLanguage(Name, File) \
  "[Languages]" + NewLine + \
  "Name: " + Name + "; MessagesFile: ""compiler:" + File + """" + NewLine + \
  "[Registry]" + NewLine + \
  "Root: HKLM; Subkey: ""SOFTWARE\Company\Office\Client""; ValueType: dword; " + \
    "ValueName: ""LocaleID""; " + \
    "ValueData: " + ReadIni(CompilerPath + File, "LangOptions", "LanguageID") + "; " + \
    "Languages: " + Name + NewLine

#emit AddLanguage("en", "Default.isl")
#emit AddLanguage("ru", "Languages\Russian.isl")
#emit AddLanguage("uk", "Languages\Ukrainian.isl")

[Languages] Name: en; MessagesFile: "compiler:Default.isl" [Registry] Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; \ ValueName: "LocaleID"; ValueData: $0409; Languages: en [Languages] Name: ru; MessagesFile: "compiler:Languages\Russian.isl" [Registry] Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; \ ValueName: "LocaleID"; ValueData: $0419; Languages: ru [Languages] Name: uk; MessagesFile: "compiler:Languages\Ukrainian.isl" [Registry] Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; \ ValueName: "LocaleID"; ValueData: $0422; Languages: uk 查看生成的代码。

© www.soinside.com 2019 - 2024. All rights reserved.