首页
/ VisualCppRedist AIO 构建工具详解与使用指南

VisualCppRedist AIO 构建工具详解与使用指南

2025-07-07 05:45:29作者:尤峻淳Whitney

项目概述

VisualCppRedist AIO 是一个将多个版本的 Visual C++ 可再发行组件包整合为单一安装包的项目。本文主要介绍其构建工具的使用方法和详细操作流程。

准备工作

系统要求

  • Windows 操作系统
  • 管理员权限的 Command Prompt
  • 必要的脚本和工具集

必备工具

  1. VBScript 脚本:用于修改和精简 MSI 文件
  2. WiSumInf.vbs:更新 MSI 摘要信息流(Windows SDK 的一部分)
  3. WiX Toolset v3:用于提取 VC++ 2012 及更高版本的引导程序
  4. 7zSfxMod:用于构建 AIO 可执行安装程序

通用构建步骤

  1. 文件准备:将原始可执行文件按版本放入对应文件夹
  2. 提取组件:使用特定命令提取 VC++ 可再发行组件
  3. 精简处理:运行 VBS 脚本精简 MSI 数据库
  4. 管理安装:创建管理安装以去除不必要的内部文件

详细版本构建指南

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 工具使用技巧

  1. 环境变量设置

    • 全局设置:setx PATH "路径;%PATH%" /M
    • 会话设置:set "PATH=路径;%PATH%"
  2. 压缩级别选项

    • 支持: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.cmd7zSfx_x86only.cmd 生成最终安装包。

常见问题与技巧

  1. 版本更新:使用 MSIProductCode.vbs 获取新版本的 ProductCode
  2. 7-Zip 路径:脚本默认使用 "%ProgramFiles%\7-Zip",可自行修改
  3. 压缩选项-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 安装包。