2013-02-22 72 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。