Inno setup ';功能不正确';调用java时从exec返回
我正在调用Inno setup ';功能不正确';调用java时从exec返回,inno-setup,Inno Setup,我正在调用cmd来执行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"',''
cmd来执行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路径`中的空格。有人知道如何更正吗?您的第一次尝试失败,因为文件路径中有一个空格,没有用双引号括起来。第二次尝试失败,因为除了文件路径外,您还将传递的参数
-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);
请注意,您确定
java.exe
将始终位于C:\Program Files\jre\bin\
中吗?需要双引号。请参考,谢谢!请注意,cmd/c
对于初始引号来说很奇怪。除了引用文件名,还必须引用整个命令行;ie:“/c”“c:\Program Files\…\java.exe”-version“
。(当然,您也应该查找java的路径,而不是硬编码。)您好,我还发现问题的原因是,正如Miral所建议的,还需要一对双引号。我查看特定文件夹,因为它在已安装的应用程序下,我们将jre放入其中。我会修复它@米拉尔,谢谢你的提示!user1954461,仍然使用第二种方式,而不使用cmd
shell。无论如何,若这篇文章解决了你们的问题,你们可能会问。首先,我只是用Exec调用java应用程序。稍后,我们需要重定向执行的输出,因此我使用cmd调用java并添加“>”将输出重定向到文件。我知道了,除了修改代码,还有其他方法添加日志吗。对于您的问题,您所说的添加日志而不是修改代码的其他方式是什么意思?您是指读取控制台输出的另一种方式吗?