我的目的是使用相同的值编写几个不同的注册表项。 我在同一个键“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|''}
)可以做任何事情。
这是测试多个子键存在的正确方法吗?
答案 0 :(得分:0)
看到你有正确的注册表密钥..
http://www.jrsoftware.org/ishelp/topic_registrysection.htm
但是,似乎确实如此,你将使用在
中列出的结构http://www.jrsoftware.org/ishelp/topic_languagessection.htm
进一步阅读,我们看到:LanguageDetectionMethod