2

私の目的は、同じ値を持ついくつかの異なるレジストリ キーを書き込むことです。同じキー「MyCAD」の下に en_US と it_IT という名前の 2 つのサブキーがあります。

inno セットアップでは、[Registry] セクションは次のとおりです。

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

[コード] セクションには、'GetKey_en_US' と 'GetKey_it_IT' の 2 つの関数があります。他の文化については、他の関数を定義できます。

より一般的には、任意のカルチャの存在をテストし、見つかった各カルチャに対して書き込み操作を実行したいと考えています。

特定のカルチャが存在しない場合 (fs_FR や en_EN など)、インストーラーは何もしないようです。つまり、[Registry] セクションに次の指示 Root: HKCU; Subkey: {code:GetKey_fr_FR|''} [values] for fr_FRがある場合: レジストリにサブキー 'fr_FR' が存在しない場合、インストーラーはそのカルチャのレジストリ設定を実行せず、単に上記の指示をスキップします。

実際、それはまさに私が望んでいることですが、それは正しい方法ですか?

補遺:

私の疑問は関数について{code:GetKey_fr_FR|''}です。Inno セットアップは、関数を通じて fr_FR サブキーの存在をテストしますGetKey_fr_FR。レジストリに存在しない特定のサブキー (fr_FR) については、Inno セットアップは何もしないようです。

キー MyCAD i の下に、異なるカルチャに関連するいくつかのサブキーを含めることができます。ユーザーは、同じ 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 セットアップは上記の各命令を実行し、すべてのキー (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|''}) は何でも実行します。

これは複数のサブキーの存在をテストする正しい方法ですか?

4

1 に答える 1