用NSIS 打包软件,想在软件安装前检测当前环境是否已经安装过了该软件,若已经有软件安装,比较已经安装软件的版本和待安装软件的版本,若待安装软件版本比较高,则提示用户原有软件版本比较低,请更新程序.
修改scrip.nsi,增加内容如下;
添加头文件 !include "WordFunc.nsh"
添加代码:
Function .onInit
XXXXXXXX;此处代码判断已经有该软件安装了
ReadRegStry $R2 HKML "SoftWare\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_VERSION}" "DisplayVersion" ;读取已安装软件版本,放在$R2中
${VersionCompare} "$R2" "${PRODUCT_VERSION}" $1 ;比较已安装软件和待安装软件的版本,并把结果放在$1中,结果有三个,1,2,和0
StrCmp $1 "1" 0 +3
MessageBox MB_OK "待安装版本比已安装版本低"
Abort
StrCmp $1 "2" 0 +3
MessageBox MB_OK "待安装版本比已安装版本高"
Abort
StrCmp $1 "0" 0 +3
MessageBox MB_OK "待安装版本和已安装版本一样"
Abort
FunctionEnd
报错信息为:
Invalid Command :${VersionCompare}
到底问题出在哪里了呢?找了半天没找到原因,请大虾们指点,呜呜呜呜