ほとんどの場合、32ビットインストーラーを実行していますが、64ビットレジストリで値を探しています。
32ビット実行可能ファイルには、の下に独自のソフトウェア設定がありますHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
。レジストリアクションは、インストーラのビット数に対応するレジストリビューから常に読み取られます。64ビットのJDKをインストールし、32ビットのJDKをインストールしていない場合、関心のあるレジストリ値は、レジストリの32ビットビューで空になります。
これが実際に問題であるかどうかを確認するには、メディアウィザードの[32ビットまたは64ビット]ステップで[64ビット実行可能ファイルの生成]を選択してみてください。期待どおりに機能するはずです。
APIを使用すると、レジストリビューを明示的に設定できます。
Object value = WinRegistry.getValue(
RegistryRoot.HKEY_LOCAL_MACHINE,
"SOFTWARE\\JavaSoft\\Java Development Kit",
"CurrentVersion",
RegistryView.BIT64
);
if (value != null) {
context.setVariable("javaCurrentVersion", value.toString());
}
を使用するRegistryView.BIT64
とRegistryView.BIT32
、32ビットインストーラーから64ビットビューにアクセスでき、64ビットインストーラーから32ビットビューにアクセスできます。