2013-09-16 52 views
0

我試圖解決這個bug報告:https://issues.jenkins-ci.org/browse/JENKINS-19447如何處理日誌文件路徑中的空格?

詹金斯調用以下命令行:

"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接受帶有空格的路徑?

+0

如果系統啓用了這些空格,則可以使用8.3名稱來避開這些空格。 – Gabe

+0

@加貝,評論不是答案:)請發表正式答案。 – Gili

+0

避免不處理,所以我只是留下了一條評論。 – Gabe

回答

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_\""

0

我不熟悉jdk.exe但/ S/V/QN表示這是一個InstallShield的setup.exe。通常這將是foo.exe/s/v「」,其中s和v切換到IS Setup.exe,並且/ v後面的所有內容都將傳遞到子msiexec進程中。這些事情然後需要雙重逃脫。