Я хотел бы определить, была ли установлена java на машине, и если да, то какая версия JRE. У меня есть простой сценарий файла .bat, который запускается и запрашивает реестр. Это работает нормально при запуске в одиночку, но при запуске в установщике Qt та же команда не возвращает пар ключ-значение. Я немного озадачен. Я попытался повысить уровень установщика при выполнении команды, но, честно говоря, сценарий успешно работает без привилегий команды, и это также не имело значения.
Например, при выполнении упрощенной версии команды:
for /f "tokens=*" %%j in (
'reg query "HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"'
) do ( echo %%j )
При запуске автономного сценария значения реестра распечатываются, но когда тот же файл вызывается (он не компилируется в установщик, а вызывается во время выполнения), та же команда выше ничего не возвращает.
Я использую структуру установщика Qt 3.0.5.
Скрипт находится в: com.domain.packagex\meta\myscript.bat
И вызывается из скрипта компонента пакета qs:
var returnArray =
installer.execute(".\\packages\\com.domain.packagex\\meta\\myscript.bat");
...
Из распечаток при запуске из установщика установщика я вижу, что скрипт запускается, и это последняя версия, но распечатки выглядят иначе (команда запроса ничего не возвращает). Я проверил, что уровень ошибки остается одинаковым до и после запроса реестра.
Я не вижу этой проблемы на своей машине с Windows 10 (x64), но я вижу ее на машине Virtualbox с Windows 10 (x64).
java.exe -version
вместо запроса к реестру? Также вы можете попробовать сделать то же самое без использования пакетного файла. Попробуйте сделать системный вызовfor /f "tokens=*" %j in ('reg query "HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"') do ( echo %j )
- person Julio   schedule 26.07.2018