调用java时,exec返回'不正确的函数'

时间:2013-02-05 05:39:59

标签: inno-setup

我正在调用cmd to excute java,但resultcode始终为1,经过检查后,我发现它代表'错误的功能'。 我的代码就像:

Exec('cmd', '/c C:\Program Files\jre\bin\java -version','' , SW_HIDE,   ewWaitUntilTerminated, ResultCode);

我也打电话,以下代码,它也不起作用:

 Exec('cmd', '/c "C:\Program Files\jre\bin\java -version"','' , SW_HIDE,  ewWaitUntilTerminated, ResultCode);

如果我调用以下代码,它可以正常工作

 Exec('cmd', '/c java -version','' , SW_HIDE, ewWaitUntilTerminated, ResultCode);

似乎无法识别java路径中的空格。有谁知道如何纠正它?

1 个答案:

答案 0 :(得分:3)

由于文件路径中的空格未被双引号括起,您的第一次尝试失败。您的第二次尝试失败,因为除了文件路径和传递的参数-version之外,您还附加了双引号。并且,在这两种情况下,您都缺少应用程序路径末尾的.exe

您可以这样尝试:

Exec('cmd', '/c ""C:\Program Files\jre\bin\java.exe" -version"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);

但是,我在这里错过了通过cmd shell执行它的原因。我想你可以通过这种方式调用java.exe直接做到这一点:

Exec('C:\Program Files\jre\bin\java.exe', '-version', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);

只有一个offtopic note,您确定java.exe将始终位于C:\Program Files\jre\bin\吗?