VisualCppRedist AIO 构建工具详解与使用指南
2025-07-07 05:45:29作者:尤峻淳Whitney
项目概述
VisualCppRedist AIO 是一个将多个版本的 Visual C++ 可再发行组件包整合为单一安装包的项目。本文主要介绍其构建工具的使用方法和详细操作流程。
准备工作
系统要求
- Windows 操作系统
- 管理员权限的 Command Prompt
- 必要的脚本和工具集
必备工具
- VBScript 脚本:用于修改和精简 MSI 文件
- WiSumInf.vbs:更新 MSI 摘要信息流(Windows SDK 的一部分)
- WiX Toolset v3:用于提取 VC++ 2012 及更高版本的引导程序
- 7zSfxMod:用于构建 AIO 可执行安装程序
通用构建步骤
- 文件准备:将原始可执行文件按版本放入对应文件夹
- 提取组件:使用特定命令提取 VC++ 可再发行组件
- 精简处理:运行 VBS 脚本精简 MSI 数据库
- 管理安装:创建管理安装以去除不必要的内部文件
详细版本构建指南
VC++ 2005 构建流程
:: 提取
start /w vcredist_x64.exe /Q /C /T:"%cd%\vc64"
start /w vcredist_x86.exe /Q /C /T:"%cd%\vc86"
:: 修改
cscript vc08.vbs vc64\vcredist.msi
cscript vc08.vbs vc86\vcredist.msi
:: 管理安装
start /w msiexec.exe /a vc64\vcredist.msi /quiet TARGETDIR="%cd%\2005\x64"
start /w msiexec.exe /a vc86\vcredist.msi /quiet TARGETDIR="%cd%\2005\x86"
rmdir /s /q vc64\ vc86\
VC++ 2008 构建流程
:: 提取
start /w vcredist_x64.exe /quiet /extract:"%cd%\vc64"
start /w vcredist_x86.exe /quiet /extract:"%cd%\vc86"
:: 修改
cscript vc09.vbs vc64\vc_red.msi
cscript vc09.vbs vc86\vc_red.msi
:: 管理安装
start /w msiexec.exe /a vc64\vc_red.msi /quiet TARGETDIR="%cd%\2008\x64"
start /w msiexec.exe /a vc86\vc_red.msi /quiet TARGETDIR="%cd%\2008\x86"
rmdir /s /q vc64\ vc86\
VC++ 2010 特殊处理
2010 版本需要额外处理补丁文件:
:: 提取并保留补丁文件
start /w vcredist_x64.exe /quiet /extract:"%cd%\tmp"
robocopy /NJH /NJS tmp\ vc10\x64\ *.cab *.msi *.msp
rmdir /s /q tmp\
:: 修改和安装
cscript vc10.vbs vc10\x64\vc_red.msi
start /w msiexec.exe /a vc10\x64\vc_red.msi /quiet TARGETDIR="%cd%\vc10\z64"
start /w msiexec.exe /a vc10\z64\vc_red.msi /quiet TARGETDIR="%cd%\2010\x64" PATCH="%cd%\vc10\x64\msp_kb2890375.msp"
WiX 工具使用技巧
-
环境变量设置:
- 全局设置:
setx PATH "路径;%PATH%" /M
- 会话设置:
set "PATH=路径;%PATH%"
- 全局设置:
-
压缩级别选项:
- 支持:none, low, mszip, medium, high
- 示例:
light.exe ... -dcl:high
AIO 安装包最终构建
将所有处理好的版本放入 _AIO
文件夹,结构如下:
_AIO/
├── 2005/
├── 2008/
├── 2010/
├── 2012/
├── 2013/
├── 2022/
├── ucrt/
├── vbc/
├── vstor/
├── 7zSfxConfig.txt
├── 7zSfxMod.sfx
├── 7zSfx_x86only.cmd
├── 7zSfx_x86_x64.cmd
运行 7zSfx_x86_x64.cmd
或 7zSfx_x86only.cmd
生成最终安装包。
常见问题与技巧
- 版本更新:使用
MSIProductCode.vbs
获取新版本的 ProductCode - 7-Zip 路径:脚本默认使用
"%ProgramFiles%\7-Zip"
,可自行修改 - 压缩选项:
-bso0
开关需要 7-Zip 15.01 或更高版本
项目目录结构示例
build_tools/
├── README.md
├── _AIO/
│ ├── 7zSfxConfig.txt
│ ├── 7zSfxMod.sfx
│ ├── 7zSfx_x86only.cmd
│ ├── 7zSfx_x86_x64.cmd
│ └── MSIProductCode.vbs
├── _m08/
│ ├── vc08.vbs
│ ├── vcredist_x64.exe
│ └── vcredist_x86.exe
...
├── _ucrt/
│ ├── UCRT.cmd
│ ├── Windows6.0-KB4132941-x64.msu
│ └── ...
└── _vstor/
├── vstor40.vbs
└── vstor_redist.exe
通过以上步骤,您可以成功构建包含多个版本 Visual C++ 运行时的 All-in-One 安装包。