网上的代码
; 安装VC环境
Function InstallVC
Push $R0
ClearErrors
ReadRegDword $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}" "Version"
; 检测含有vc的注册表信息是否存在
IfErrors 0 VSRedistInstalled
Exec "$INSTDIR\vcredist_x86.exe /q" ;若不存在,执行静默安装
StrCpy $R0 "-1"
; MessageBox MB_OK $R0
VSRedistInstalled:
; MessageBox MB_OK "已安装"
Exch $R0
; Delete "$INSTDIR\vcredist_x86."
FunctionEnd
问题描述:
1, 代码有点老检查的是vc2008
2,读取注册表的的类型和名称都变了
3,push之后就用pop吧,别用奇葩的Exch,不知道这是不是nsis早期版本的问题
我修改后的
; 安装VC环境
Function InstallVC
Push $R0
ClearErrors
;这里检测的是vs2013 update5的 vcredist_x86.exe 版本号是: 12.0.30501.0
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5e4b593b-ca3c-429c-bc49-b51cbf46e72a}" "BundleVersion"
; 检测含有vc的注册表信息是否存在
IfErrors 0 VSRedistInstalled
Exec "$INSTDIR\vcredist_x86.exe /q" ;若不存在,执行静默安装
StrCpy $R0 "-1"
;MessageBox MB_OK "安装完毕"
VSRedistInstalled:
;MessageBox MB_OK "已安装"
;Exch $R0
pop $R0
; Delete "$INSTDIR\vcredist_x86."
FunctionEnd