bit版本(bit version),是从国外一个论坛的帖子抄过来的,我原本也不清楚该怎样命名它,觉得bit version挺合适的,就这样使用起来了。
SWT bit version有32-bit和64-bit两种,同样,jdk也有32-bit和64-bit两种。经过多次测试,发现32-bit SWT只能安装在32-bit JDK 上,而64-bit SWT也只能安装在 64-bit JDK上,两都不能交叉使用,即32-bit SWT 不能在 64-bit JDK 上使用, 64-bit SWT 不能在 32-bit JDK 上使用,这两种情况都会报类似"版本不兼容“的错误。我们的产品用到SWT,而客户环境的JDK可能会是32-bit或64-bit的,一般情况下,可以做个划分,比如产品也对应地分出两个版本,版本32-bit就只能安装在32-bit的JDK上,版本64-bit就只能安装在64-bit的JDK上,但这样不好,如果客户装了32-bit的之后发现不行,再重新安装64-bit的,换成是我,也会不爽的,所以要解决这个问题,让产品能够根据客户选择的JDK bit version来选用对应的SWT包。
研究了一下InatallAnywhere,发现可以对它做扩展。在这里,我写了一个扩展,在产品安装完之后,执行一个Action,检查客户所选择的JDK的bit version,再绑定对应bit version的SWT包。这种方法测试一段时间,发现可行性还挺好的,但之后又发现,如果客户不选择JDK,产品会到system32(此时是windows platform)时读取java.exe