这是为多种文化编写注册表项的正确方法吗?

时间:2013-11-30 20:49:01

标签: internationalization registry inno-setup registrykey

我的目的是使用相同的值编写几个不同的注册表项。 我在同一个键“MyCAD”

下有两个名为en_US和it_IT的子项

在inno设置中,[Registry]部分是:

Root: HKCU; Subkey: {code:GetKey_en_US|''} [values] for en_US
Root: HKCU; Subkey: {code:GetKey_it_IT|''} [values] for it_IT

在[Code]部分中,我有两个函数'GetKey_en_US'和'GetKey_it_IT'。 其他功能可以为其他文化定义。

更多人一般希望测试任何文化的存在,并为每种文化进行写作操作。

似乎如果不存在特定的文化(例如fs_FR或en_EN),安装程序什么都不做。 换句话说,如果我在[注册表]部分中有以下说明: Root: HKCU; Subkey: {code:GetKey_fr_FR|''} [values] for fr_FR,但在注册表中,子项'fr_FR'不存在,安装程序不执行该文化的注册表设置,只需跳过上述说明。

事实上,这正是我想要的,但这是正确的方法吗?

附录:

我怀疑的是{code:GetKey_fr_FR|''}这个功能。 Inno setup通过函数GetKey_fr_FR测试fr_FR子键的存在。 似乎对于注册表中不存在的特定子键(fr_FR),Inno setup会做任何事情。

在MyCAD键下,我可以有几个与不同文化相关的子项。用户可以安装相同CAD应用程序的多个版本,区别在于各种文化:

HKCU
    --Software
              -->MyCAD
                      -->en_US
                              -->Applications
                      -->it_IT
                              -->Applications

My Inno设置注册表部分提取:

[Registry]
    Root: HKCU; Subkey: {code:GetKey_en_US|''} [values] for en_EN
    Root: HKCU; Subkey: {code:GetKey_en_EN|''} [values] for en_US
    Root: HKCU; Subkey: {code:GetKey_it_IT|''} [values] for it_IT
    Root: HKCU; Subkey: {code:GetKey_fr_FR|''} [values] for fr_FR
    Root: HKCU; Subkey: {code:GetKey_es_ES|''} [values] for es_ES

在这种情况下,Inno setup会执行上述每条指令,尝试找到所有键(en_US,en_EN,it_IT,fr_FR,es_ES)。

但是,由于在注册表中只有子键en_US和it_IT,其他函数({code:GetKey_en_EN|''}, {code:GetKey_fr_FR|''}, {code:GetKey_es_ES|''})可以做任何事情。

这是测试多个子键存在的正确方法吗?

1 个答案:

答案 0 :(得分:0)

看到你有正确的注册表密钥..

http://www.jrsoftware.org/ishelp/topic_registrysection.htm

但是,似乎确实如此,你将使用在

中列出的结构

http://www.jrsoftware.org/ishelp/topic_languagessection.htm

进一步阅读,我们看到:LanguageDetectionMethod