最近用到nsis打包程序,由于程序依赖于Microsoft VC++ 2015 Redistributable,所以安装前需要读注册表判断一下是否需要安装依赖。
上网了解了一些nsis script的基本语法,网上比较多的判断程序都是:
Function InstallX86
Push $R0
ClearErrors
ReadRegDword $R0 HKLM "SOFTWARE\Classes\Installer\Dependencies\{e2495eb6-cca8-47aa-91ea-3410ca44d7b7}" "Version"
IfErrors 0 VSRedistInstalled
MessageBox MB_ICONQUESTION|MB_YESNO "Need MS VC++ 2008 Redistributable, do you want to install it ?" IDNO VSRedistInstalled
File "..\Output\Setup-Files\vcredist_x86.exe"
ExecWait "$INSTDIR\vcredist_x86.exe"
VSRedistInstalled:
Exch $R0
FunctionEnd
我在本地可以正确读出注册表数据,可是ifErrors每次判断都是false,所以每次都会询问是否安装
Need MS VC++ 2008 Redistributable, do you want to install it ?
困惑很久,搜了很多资料,终于找到问题。
ReadRegDword改