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

康斯坦丁

我有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或其他名称。

马丁·普里克里(Martin Prikryl)

您可以使用预处理器同时生成[Languages][Registry]条目。预处理器具有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

添加SaveToFile到脚本的末尾以查看生成的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Inno Setup中将值写入存储在数组中的所有注册表项

如何在Linux中将时间戳记写入Windows注册表和conf

如何在C ++中将32位D字写入Windows注册表

如何在 Installshield 2018 中将语言 ID 写入注册表?

在Inno Setup中将一组字符(带有常量)转换为十六进制(用于注册表)

Inno Setup 忽略注册表重定向?

Inno Setup [注册表]-使用函数返回值

如何通过阅读注册表在Inno Setup中验证用户名和密码

Inno Setup:如何在“注册”部分操作进度栏?

如何在Inno Setup中使用UTC

如何将生产版本写入注册表

在Inno Setup中写入32/64位特定的注册表项

使用Inno Setup安装mod / plugin时,如何从注册表中获取目标游戏/应用程序的安装路径?

Inno Setup - 拒绝注册表项的 ACL

安装VB.net应用程序时如何在注册表中写入值?

如何在运行时查找、读取、写入 Jython 注册表

INNO安装程序将多行文本常量写入注册表

如何在Windows 10中将注册表还原为默认设置?

如何在公司中将注册表的某些部分设置回标准状态?

Inno setup 卸载程序不会删除重写的注册表值

Inno Setup在注册表中的多字符串键中追加行

使用Inno Setup包含注册表,自定义消息和代码文件的正确方法

Inno Setup:使用“注册表”部分中“自定义向导”页面中的数据

使用 Inno Setup 在安装开始时添加注册表值

如何在Inno Setup中修改错误消息?

如何在Inno Setup中使用空格处理路径?

如何在Inno Setup中的安装后强制重启

如何在Inno Setup中翻译MsgBox中包含的文本?

如何在Inno Setup中最小化安装程序?