В InnoSetup я запускаю этот код:
J32 := ShellExec('', 'java', '-d32 -version', '', SW_HIDE, ewWaitUntilTerminated, ec);
J64 := ShellExec('', 'java', '-d64 -version', '', SW_HIDE, ewWaitUntilTerminated, ec);
И J32
, и J64
True
.
В командной строке:
> java -d32 -version
Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.
> echo %errorlevel%
1
> java -d64 -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
> echo %errorlevel%
0
Почему ShellExec()
игнорирует Params
?
Я пытался Exec()
также:
// this way
J32 := Exec('java', '-d32 -version', '', SW_HIDE, ewWaitUntilTerminated, ec);
// and this way
J32 := Exec('>', 'java -d32 -version', '', SW_HIDE, ewWaitUntilTerminated, ec);
Они все возвращают True
и ec = 1
, несмотря на то, что яесть 64-битный Java.
Кажется, что Exec
и ShellExec
возвращают True
, потому что они успешно запускают java
, но они не отслеживают код ошибкиjava
возвращается.