在NSIS中检测64位JVM

时间:2013-02-22 23:21:04

标签: java 64-bit nsis

我目前使用NSIS为我的Java应用程序创建安装程序。我的应用程序需要本机库,所以目前我正在创建两个安装程序,一个是32位,另一个是64位库。

问题是所需的库类型取决于JVM,而不是OS体系结构。可以理解的是,使用64位Windows的用户通常会下载64位安装程序,即使他们运行的是32位JVM。即使我在网站的下载页面上写了解释,用户也不太可能阅读(或理解),因此需要更好的解决方案。

任何人都可以建议一些不错的NSIS脚本来帮助在安装时检测JVM类型,以便可以安装正确的库。这样我就可以提供单个Windows安装程序并隐藏用户的复杂功能。

1 个答案:

答案 0 :(得分: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加载正确的库。