nsis检测vc2013运行环境vcredist_x86.exe是否已经安装

本文介绍了一段NSIS脚本用于检测并静默安装Visual C++ Redistributable的方法。通过读取注册表来判断是否已安装指定版本的VC运行库,并在未安装的情况下执行静默安装。针对原始代码进行了更新,包括调整了检测的VC版本及修复了一些代码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上的代码

原始地址

; 安装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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值