NSIS: невозможно получить версию JRE из реестра в 64-разрядной версии Windows 7 - PullRequest
4 голосов
/ 25 ноября 2010

Я использую скрипт NSIS для генерации установщика Windows для моего проекта Java.В этом установщике я хочу проверить, имеет ли компьютер правильную версию JRE, прежде чем продолжить.

Это мой фрагмент кода для получения версии JRE: -

ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"

# display $1 value for testing purpose
MessageBox MB_OK "Version: $1"

Этот код работает нормальнов Windows XP, но я не могу заставить его работать в Windows 7 64 бит ... номер версии всегда пуст.Я проверяю реестр, и я почти уверен, что путь правильный и значение CurrentVersion имеет значение.

Может кто-нибудь сказать мне, что я здесь не так делаю?

Большое спасибо!

Ответы [ 3 ]

8 голосов
/ 25 ноября 2010

В NSIS вы можете установить режим реестра с помощью SetRegView

2 голосов
/ 25 ноября 2010

Является ли установщик 32-разрядным, а среда выполнения - 64-разрядной или наоборот?В этом случае вы можете быть перенаправлены на другие узлы реестра (внутри HKLM / Software или HKLM / Software / Wow6432Node).

1 голос
/ 25 ноября 2010

Установщик NSIS - это 32-разрядная программа, поэтому он видит другую часть реестра.Эта статья базы знаний объясняет разницу в реестре в 64-битной Windows.

http://support.microsoft.com/kb/305097

Я не совсем уверен, можете ли вы получить доступ к нужному ключу из 32-битного приложения илине.

...