其实NSIS的官网已经提供了很多别人开发的插件了,今天需要用到GetVersion这个插件,这是不维护的插件了,不推荐用,但是由于现实中的问题,导致我不得不用这个插件。
所以就下载下来了。
下载下来之后,作者已经把插件源码打包成VS工程了,感兴趣可以看看底层原理。我只需要二进制的模块,所以把GetVersion.dll拷贝到了NSIS的插件目录下,就能使用了
以下是NSIS的脚本代码:
Var /GLOBAL
WINDOWS_ARCHITECTURE
;这里用了GetVersion插件,但是该插件的作者已经停止维护了,
;但是不得已,需要使用,把GetVersion.dll放到了NSIS的插件目录下
GetVersion::WindowsPlatformArchitecture
Pop $WINDOWS_ARCHITECTURE ; 32 or
64
WINDOWS_ARCHITECTURE 这个变量的值就是32或者64了,我后面用${If} "$WINDOWS_ARCHITECTURE" != "${Version}" 做下比较
就可以知道当前编译环境(编译脚本源文件),和安装包之后的运行环境了。如果不一致就告诉客户不能运行此程序 Version 这个变量是通过向NSIS的编译器通过/D 而获得的,/D后面加Version=%Platform%得到的