2011-11-13 11 views
4

InstallShieldプロジェクトをビルドして、クリーンな64ビットWindows 7マシンでインストールをテストすると、HKEY_LOCAL_MACHINE \ SOFTWAREでregeditをチェックするとWow6432Nodeキーが作成されるという問題があります。すべてが正しく登録され、プログラムは正常に動作しているようです。私は私のプロジェクトがこれを引き起こしていることを確認しました。私はそれをそのまま残しておきたいのですが、そのようなレジストリを持つのはばかげているでしょうから。誰かがこれが起こる原因を知っていますか?それ以上の情報が必要な場合は、私に知らせてください。InstallShieldのネストされたWow6432Nodeキー

+1

どのオペレーティングシステムですか? VistaにはこのHouse of Mirrorsの問題がありました。 Windows 7で修正されました。 –

+0

Windows 7です。これを私の質問に追加します。 – Aura

答えて

2

か。インストールシールドプロジェクトを開いてコンポーネントを見ると、ビルド時にCOM Extractプロパティがyesに設定されているものもあります。そのコンポーネントを展開し、ファイルを確認します。右クリックしてプロパティを表示します。ファイルに[自己登録]がチェックされている場合は、表示されている問題が発生します。私たちが行ったときに、ビルド時のCOM Extractをファイルを自己登録していたすべてのコンポーネントから削除すると、問題がなくなりました。

製品を64ビットマシンにインストールすると、wow6432nodeキーがレジストリにネストされます。 32ビットマシンでは、レジストリにwow6432nodeキーを追加するだけで、32ビットマシンには存在しないはずです。

この問題は、ビルドプロパティでCom Extractがyesに設定されている特定のコンポーネントに由来し、そのコンポーネントに含まれるファイルの1つが自己登録に設定されていることに起因します。これにより、wow6432nodeが誤って作成されます。ネストされたwow6432nodeキーがなぜ表示されているのかという質問に答えるのはもう少し複雑です。

あなたのケースでは、あなたはwow6432nodeの問題を持つ再配布可能ファイルを作成していると思います。メインのインストーラが必要なレジストリキーを作成すると、マシンが64ビットかどうかを確認します。そうであれば、すべてをwow6432nodeキーの下に置きます。今のところすべてが機能していますが、エラーを含む再配布可能ファイルがあります。次に、すべてのものをそれ自身のWow6432nodeキーにインストールします。これは現在メインインストーラに含まれています。アプリケーションを32ビットマシンにインストールすることで、これをテストすることができます。ネストされたキーではなく、1つのwow6432nodeキーしか表示されません。 1つのwow6432nodeキーは、再配布可能ファイルに含まれている上記の問題から誤って作成されたものです。

(解説のため編集済み)

+0

これは実際問題です。私の再配布可能ファイルのマージモジュールの1つに、自己登録コンポーネントのCom Extract at Buildプロパティがyesに設定されていました。それをnoに設定すると、問題は修正されました。ありがとう。 – Aura

1

64ビットシステムでは、1つの64ビットインストールを作成し、コンポーネント64ビットのプロパティで[はい]を設定できます。私は私の仕事でこの問題を見てきました

Disable(WOW64FSREDIRECTION); 

//... call register function 

Enable(WOW64FSREDIRECTION); 
関連する問題