web-dev-qa-db-ja.com

InnoSetupでMicrosoftVC ++再配布可能ファイルをサイレントインストールする方法は?

InnoSetupでMicrosoftVC++再配布可能ファイルをサイレントインストールする方法は?次のコードを使用しました。インストールの進行状況ウィンドウを除いて、インストール部分のほとんどはサイレントです。

これが私の[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...
12
Myanju

スムーズにインストールするには、再配布可能ファイルをインストールする必要があるかどうかを確認してください。インストールされたバージョンがすでに最新である場合(かなり可能性が高い)、それを開梱することさえしないでください。

[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にも適していることに注意してください。

5
MSalters

それらをセットアップスクリプトに追加できます。

[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とは異なる再配布可能なバージョンを使用している場合、実行パラメーターがわずかに変更されることに注意してください。

5
Thunder

上記のコードを次のように変更しました。それから私はそれが正しく動作するようになり、インストール全体がかなりスムーズで静かでした。

[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;

参照リンク:

2
Myanju

これが私の解決策です:

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