0

我正在尝试解决此错误报告:https ://issues.jenkins-ci.org/browse/JENKINS-19447

Jenkins 正在调用以下命令行:

"C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\jdk.exe" /s /v /qn /L "C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\jdk.exe.install.log" REBOOT=ReallySuppress INSTALLDIR="C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_"

事实证明 msiexec 不喜欢日志的路径(/L 参数)。如果日志位于带有空格的路径中,则 msiexec 会抱怨命令行无效。如果日志路径不包含空格,则可以正常工作。我猜引号被忽略了,路径被解析为两个单独的参数。

如何让 msiexec 接受带空格的路径?

4

2 回答 2

1

我很幸运(通过反复试验和谷歌的力量):

诀窍是/V用引号括住 的参数,并使用 . 转义嵌套的引号\"。这是更新的命令行。

"C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\jdk.exe" /s /v"/qn /L \"C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\jdk.exe.install.log\" REBOOT=ReallySuppress INSTALLDIR=\"C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\""

于 2013-09-16T17:27:44.103 回答
0

我对 jdk.exe 不熟悉,但 /s /v /qn 表明它是 InstallShield setup.exe。通常这将是 foo.exe /s /v"" 其中 s 和 v 是到 IS Setup.exe 的开关,/v 后面的所有内容都是要传递到子 msiexec 进程的参数。然后需要对这些东西进行双重转义。

于 2013-09-16T20:27:23.587 回答