差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:installanywhere:slashinstallpathproblemonwindows [2016/02/03 17:38] tony [Problem] |
java:installanywhere:slashinstallpathproblemonwindows [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 21: | 行 21: | ||
</code> | </code> | ||
===== How to resolve? ===== | ===== How to resolve? ===== | ||
+ | 在GUI模式下,即使你輸入forward-slash,InstallAnywhere也會強制把你轉成back-slash。如果把它列為使用上限制,還是有使用者會不小心踩雷;而且forward-slash不能用,有些難搞的使用者也會提出質疑。因此我最後想到的方法是,直接將forward-slash轉為back-slash。就我所知,有幾個方法可以達到我們這個目的: | ||
+ | - 透過Batch取代,將output轉入變數 | ||
+ | - Execute Custom Code | ||
+ | 要使用Execute Custom Code,我們必須額外去implement java code,還要做包裝。我嫌麻煩,就挑了Batch去做取代的方式:\\ | ||
+ | \\ | ||
+ | 我的第一個方法,是直接將字串中的/取代為\後,就直接echo: | ||
+ | <code bash> | ||
+ | @echo off | ||
+ | set INSTALL_PATH=$USER_INSTALL_DIR$ | ||
+ | set INSTALL_PATH=%INSTALL_PATH:/=\% | ||
+ | echo %INSTALL_PATH% | ||
+ | </code> | ||
+ | 但執行就是不成功,也發現log中的路徑後有跳行符號。我推測可能是echo的原因,所以調整了script,讓輸出不會跳行: | ||
+ | <code bash> | ||
+ | @echo off | ||
+ | set INSTALL_PATH=$USER_INSTALL_DIR$ | ||
+ | set INSTALL_PATH=%INSTALL_PATH:/=\% | ||
+ | set /p="%INSTALL_PATH%"<nul | ||
+ | </code> | ||
+ | 然而這個做法,路徑後一樣有跳行符號。我想,這應該是assign標準輸出的問題,最後只好將內容輸出成一個properties檔案,再透過Properties File Reader去把它讀出來Override:\\ | ||
+ | {{:java:installanywhere:ia_refine_user_install_dir_group.png|}}\\ | ||
+ | \\ | ||
+ | 由於要將路徑輸出到prop中,back-slash必須是兩個,因此會將/與\取代為兩個\,最後再寫到安裝暫存目錄中: | ||
+ | <code bash> | ||
+ | @echo off | ||
+ | set INSTALL_PATH=$USER_INSTALL_DIR$ | ||
+ | set INSTALL_PATH=%INSTALL_PATH:\=\\% | ||
+ | set INSTALL_PATH=%INSTALL_PATH:/=\\% | ||
+ | set /p="%INSTALL_PATH%"<nul | ||
+ | echo USER_INSTALL_DIR=%INSTALL_PATH%>$lax.user.dir$$/$tmp.properties | ||
+ | </code> | ||
+ | 接著當然是將此檔案給讀出來,去覆蓋$USER_INSTALL_DIR$:\\ | ||
+ | {{:java:installanywhere:ia_read_tmp_prop.png|}} | ||
+ | |||
===== Reference ===== | ===== Reference ===== | ||
* [[https://community.flexerasoftware.com/showthread.php?176519-Evaluate-empty-string|如何使用空字串?]] | * [[https://community.flexerasoftware.com/showthread.php?176519-Evaluate-empty-string|如何使用空字串?]] |