Inno Setup 安装包Visual C++环境检测
将Visual C++安装包添加到安装包中
下列代码将VC_redist的x86安装包添加到安装包中,若需要其他安装包,请至 https://support.microsoft.com/zh-cn/help/2977003/the-latest-supported-visual-c-downloads 下载。
2015-2019版本见:https://visualstudio.microsoft.com/zh-hans/downloads/ 中的其他工具和框架
1 |
|
在[Code]段添加Visual C++环境检查代码
- 添加Visual C++环境检查代码
- 关于
versionBuild值的来源,见下载的VC_redist.x86.exe文件的属性-详细信息-产品版本的第三级版本号
- 关于
1 |
|
- 在初始化安装包时,检查C++环境
- 下面示例中,检查
Visual C++ 2019的32位x86版本是否安装【2015-2019现在是共享相同的可再发行软件文件】
- 下面示例中,检查
1 |
|
其他检测方式:通过卸载注册表项检测
除上述
IsVCPPDetected方式外,还可通过HKLM\...\Uninstall下的卸载注册表项(GUID)判断 Visual C++ 运行库是否安装。以下函数摘自社区脚本 vcredistversion.iss,支持 VC2013(13)、VC2015(15) 及 VC2015 Update3(15sp3) 的 Minimum/Additional Runtime。
- Visual C++ x64 安装环境检查
1 |
|
- Visual C++ x86 安装环境检查
1 |
|
注意事项
IsVCPPDetected方法的一个bug:当已经安装vc2015,然后安装vc2017,注册表没有相应的记录【应该是vc2017那个安装包有些问题】,安装完再安装一次vc2017,就解决了,但这个毕竟是个问题,可以考虑结合上述GUID检测方式- 静默安装:将
Exec(Path, '', ...)改为Exec(Path, '/q', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);即可静默安装【/q—— 静默安装】,建议安装后再次调用检测函数确认是否成功
参考
- vcredistversion.iss - Belphemur
- Inno Setup 静默安装 VC redistributables - mistic100
- How to install Microsoft VC redistributables silently in Inno Setup - Stack Overflow
解:奇葩史