【问题标题】:How to install Microsoft VC++ redistributables silently in Inno Setup?如何在 Inno Setup 中静默安装 Microsoft VC++ 可再发行组件?
【发布时间】:2014-07-04 12:11:29
【问题描述】:

如何在 Inno Setup 中静默安装 Microsoft VC++ 可再发行组件?我使用了以下代码,除了安装进度窗口外,大部分安装部分都是静默的。

这是我的[Run] 部分的代码:-

[Run]
Filename: "{app}\bin\vcredist_x86.exe"; \
    Parameters: "/passive /verysilent /norestart /q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; \
    Check: VCRedistNeedsInstall; WorkingDir: {app}\bin;Flags: runminimized nowait; \
    StatusMsg: Installing CRT...

【问题讨论】:

  • 你遇到了什么问题?
  • @Pratham 我想静默安装 Microsoft VC++ 可再发行组件。但它仍然显示安装窗口。
  • VC++是哪个版本的?不同版本需要的命令略有不同。
  • 你也可以尝试使用标志作为 runhidden 而不是 runminimized

标签: inno-setup


【解决方案1】:

为了顺利安装,请检查是否有必要安装可再发行组件。如果安装的版本已经是最新的(很可能),甚至不要解压它。

[Files]
; VC++ redistributable runtime. Extracted by VC2017RedistNeedsInstall(), if needed.
Source: ".\Redist\VC_redist_2017.x64.exe"; DestDir: {tmp}; Flags: dontcopy

[Run]
Filename: "{tmp}\VC_redist_2017.x64.exe"; StatusMsg: "{cm:InstallingVC2017redist}"; \
  Parameters: "/quiet"; Check: VC2017RedistNeedsInstall ; Flags: waituntilterminated
[Code]
function VC2017RedistNeedsInstall: Boolean;
var 
  Version: String;
begin
  if RegQueryStringValue(HKEY_LOCAL_MACHINE,
       'SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64', 'Version', Version) then
  begin
    // Is the installed version at least 14.14 ? 
    Log('VC Redist Version check : found ' + Version);
    Result := (CompareStr(Version, 'v14.14.26429.03')<0);
  end
  else 
  begin
    // Not even an old version installed
    Result := True;
  end;
  if (Result) then
  begin
    ExtractTemporaryFile('VC_redist_2017.x64.exe');
  end;
end;

请注意,14.14 可再发行版也适用于 VS2015。

【讨论】:

  • 有没有办法在安装时下载它们,而不是将它们包含在安装程序中。它将减小安装程序的大小。
  • @user8123187 希望这会有所帮助codeproject.com/Articles/20868/…
  • 而不是Flags: dontcopy,重用Check: VC2017RedistNeedsInstall——你不需要使用ExtractTemporaryFile显式提取文件——Check函数可以(并且是)多次调用,所以它不应该做昂贵的操作。
【解决方案2】:

您可以将它们添加到设置脚本中:

[Files]
Source: "vcredist_x86.exe"; DestDir: {tmp}; Flags: deleteafterinstall

[Run]
Filename: {tmp}\vcredist_x86.exe; \
    Parameters: "/q /passive /Q:a /c:""msiexec /q /i vcredist.msi"""; \
    StatusMsg: "Installing VC++ 2008 Redistributables..."

请注意,如果您使用的是与 2008 不同的可再发行版本,则运行参数会略有变化。

【讨论】:

【解决方案3】:

我将上面的代码修改如下。然后我让它正常工作,整个安装过程非常顺利和安静。

[Run]
Filename: "{app}\bin\vcredist_x86.exe"; \
    Parameters: "/q /norestart /q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; \
    Check: VCRedistNeedsInstall; WorkingDir: {app}\bin;

参考链接:

【讨论】:

    【解决方案4】:

    这是我的解决方案:

    Filename: "{tmp}\vc_redist.x86.exe"; Parameters: "/q /norestart"; \
        Check: VCRedistNeedsInstall; StatusMsg: "Installing VC++ redistributables..."
    

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      相关资源
      最近更新 更多