You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Inno Setup中可选下载安装Visual C++ Redistributable

在Inno Setup任务页面添加VC++ Redistributable下载安装复选框

以下是满足需求的完整实现方案,直接套用即可:

1. 定义任务复选框([Tasks]段)

在脚本的[Tasks]区域添加对应VC版本的任务项,这些复选框会直接显示在任务选择页面:

[Tasks]
Name: InstallVC2010; Description: "安装Microsoft Visual C++ 2010 Redistributable (x64)"; GroupDescription: "可选组件:"; Flags: unchecked
Name: InstallVC2013; Description: "安装Microsoft Visual C++ 2013 Redistributable (x64)"; GroupDescription: "可选组件:"; Flags: unchecked
  • Flags: unchecked设置默认不勾选,可根据需求改为checked
  • GroupDescription将两个复选框归类到同一组,优化界面布局

2. 实现下载、安装与清理逻辑([Code]段)

通过调用Windows API实现文件下载,再执行静默安装,最后自动删除安装包:

[Code]
// 导入系统API用于下载文件
function URLDownloadToFile(pCaller: Integer; szURL, szFileName: String; dwReserved: Integer; lpfnCB: Integer): Integer;
  external 'URLDownloadToFileW@urlmon.dll stdcall';

// 通用函数:处理VC包的下载、安装、清理流程
procedure HandleVCInstall(const VCName, VCURL, SilentArgs: String);
var
  TempDir, InstallerPath: String;
  ExitCode: Integer;
begin
  // 获取系统临时目录作为下载路径
  TempDir := ExpandConstant('{tmp}');
  InstallerPath := TempDir + '\' + VCName + '_x64.exe';

  // 下载文件(返回0表示成功)
  if URLDownloadToFile(0, VCURL, InstallerPath, 0, 0) = 0 then
  begin
    // 执行静默安装,等待安装完成
    if Exec(InstallerPath, SilentArgs, '', SW_HIDE, ewWaitUntilTerminated, ExitCode) then
    begin
      // 安装完成后删除临时安装包
      DeleteFile(InstallerPath);
    end;
  end;
end;

// 在安装流程的后期触发任务执行
procedure CurStepChanged(CurStep: TSetupStep);
begin
  // 仅在主程序安装完成后执行VC包的安装
  if CurStep = ssPostInstall then
  begin
    // 检查VC2010任务是否被勾选
    if IsTaskSelected('InstallVC2010') then
    begin
      HandleVCInstall('vcredist2010', 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe', '/q');
    end;

    // 检查VC2013任务是否被勾选
    if IsTaskSelected('InstallVC2013') then
    begin
      HandleVCInstall('vcredist2013', 'https://aka.ms/highdpimfc2013x64enu', '/quiet /norestart');
    end;
  end;
end;

说明:

  • 静默参数是微软官方推荐:VC2010用/q,VC2013用/quiet /norestart
  • 下载的安装包存放在系统临时目录{tmp},安装后自动删除,无需额外清理
  • 采用Unicode版本APIURLDownloadToFileW,兼容64位系统

3. 额外注意点

  • 确保安装程序具备网络访问权限,否则下载会失败
  • 若需支持32位系统,只需替换对应x86版本的下载链接,并调整任务描述
  • 可在任务描述中补充"(需联网下载)",提前告知用户依赖网络

内容的提问来源于stack exchange,提问作者AzureKnight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:27:18