Problem
把JVM和軟體包一起發布,是將side effect降到最低的方法。然而,Oracle打算開始追討授權費,也讓我們開始思考該怎麼發布軟體。如果用使用者安裝的Sun JVM是否能解決問題呢? 這我們不曉得;而另外一條路就是OpenJDK。然而OpenJDK的授權,也難以直接包裝於企業用軟體。因此還是要回歸到如何不包裝JVM,但安裝時有JVM可用的問題。
How to?
在InstallerAnywhere 2015 build tab中,可以看到VM Search Instructions設定。其中Without VM包含了搜尋現有與線上下載兩種模式:
Download from URL
如上圖所示,你必須輸入一個URL,它可以是http也可以是ftp,但請確定server允許匿名存取;md5 hash驗證就看你是否需要,我是使用HashMyFiles去取得md5 hash值。實際執行build installer,從http下載結果:
從ftp下載結果:不管是下載失敗或md5驗證沒通過,安裝最後都會結束。
Search for VM
首先可以從user guide的Locations on a Target System that Are Searched for JVMs中得知:
- Windows搜尋%PATH%與Registry。
- Unix搜尋$PATH與某些固定放command line的路徑。
(下圖來自IA 2015 user guide)
如果你所需要的JVM為1.8以上,可以到Project > JVM Settings中,做如下圖的設定:Reference
其它
以上方式只是告訴你在使用without VM去build installer後,當installer執行時獲得JVM的方法。然而在轉換這種方法後,installer是否會有其它side effect,就需要自行測試。畢竟user的環境是複雜滴~
舉例來說,使用現有的jvm後,如果你的installer內原本會透過$lax.user.dir$$/$resource$/$jre$/$bin$/$java的方式去執行某些動作,就會有問題;如果用下載的就不會有問題。面對這問題,可以把java執行路徑改為:
# 以linux為例 # $prop.JAVA_PROPERTY$ 代表要透過InstallAnywhere取得java properties $prop.java.home$$/$bin$/$java -version
留言
張貼留言