2013-02-22 69 views
0

我目前使用NSIS爲我的Java應用程序創建安裝程序。我的應用程序需要本地庫,因此目前我正在創建兩個安裝程序,一個使用32位,另一個使用64位庫。檢測NSIS中的64位JVM

問題是所需的庫類型依賴於JVM而不是OS架構。很可以理解,使用64位Windows的用戶通常會下載64位安裝程序,即使他們正在運行32位JVM。即使我在我的網站的下載頁面上寫下解釋,用戶也不可能閱讀(或理解),所以需要更好的解決方案。

任何人都可以推薦一些很好的NSIS腳本來幫助檢測安裝時的JVM類型,以便安裝正確的庫。這樣我就可以提供一個Windows安裝程序並隱藏用戶的複雜功能。

+3

請參閱http://stackoverflow.com/questions/807263/how-do-i-detect-which-kind-of-jre-is-installed-32bit-vs-64bit/4137875#4137875我發佈瞭解決方案I在那裏成功使用。 – Gene 2013-02-23 01:32:11

回答

0

如果可能,應考慮更改應用程序以有條件地加載正確的本機庫並創建一個安裝程序。你的客戶會更開心。

喜歡的東西(適用於Windows):(例如教學只 - 沒有投入生產)

String archDataModel = System.getProperty("sun.arch.data.model"); 
String libName = "Java2WinExample"; 
String libExt = ".dll"; 
String libNameFQ = libName+archDataModel+libExt; 
System.loadLibrary(libNameFQ); 

您的單一安裝程序會同時安裝Java2WinExample32.dll和Java2WinExample64.dll和應用程序將加載基於正確的庫調用JVM。