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

标签 registry inno-setup

我有 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我必须在字段中输入相应的 LanguageID(俄语为 $0419,乌克兰语为 $1058,英语为 $0409 等)。我可以手动输入这些数字,但我想知道是否有办法从其名称或其他内容中提取 LanguageID。

最佳答案

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

#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

Add SaveToFile to the end of the script查看生成的代码。

关于registry - 如何在 Inno Setup 中将 LanguageID 写入注册表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60869549/

相关文章:

windows - 将文件类型/扩展名与 Inno Setup 中的 .exe 文件中的非主要图标相关联

inno-setup - 为每个用户获取应用程序数据文件夹

windows - 神秘的 native "A"注册表项,路径为 : Registry\A

java - 尽管创建了文件关联,但文件不会在我的应用程序中打开

inno-setup - Inno Setup 编译器中的最佳压缩设置

windows - Inno Setup 在静默安装期间将锁定文件替换推迟到下一次重新启动

.net - 为什么 .NET "application settings"没有存储在注册表中?

c# - 如何在 Windows 启动时运行 C# 应用程序?

windows - 如何更改windows系统默认的最大化窗口大小?

dll - 在InnoSetup中注册DLL/OCX