如何从Inno-setup安装DirectX可再发行组件?

Tut*_*men 2 directx installation inno-setup

我没有在Inno-Setup网站上找到有关DirectX安装的任何提示.那么,是否有任何示例安装脚本?我知道我必须添加[Run] sction这样的东西:

Filename: "{src}\DirectX\DXSETUP.exe"; WorkingDir: "{src}\DirectX"; Parameters: "/silent"; Check: DirectX; Flags: waituntilterminated; BeforeInstall: DirectXProgress;
Run Code Online (Sandbox Code Playgroud)

但是如何将它包含到安装文件(临时文件夹?)中,如何提取它等等?

Dea*_*nna 6

要将其包含在设置中,您可以将其安装到那里{tmp},然后[Run]从那里安装.

安装此类要求的正确方法是在代码中提取并Exec()PrepareToInstall()事件函数中调用它:

function PrepareToInstall(var NeedsRestart: Boolean): String;
var
  InstallerResult: integer;
begin
  //Check if .Net is available already
  if NeedsDirectX() then begin
    ExtractTemporaryFile('DXSETUP.exe');
    if Exec(ExpandConstant('{tmp}\DXSETUP.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, InstallerResult) then begin
      case InstallerResult of
        0: begin
          //It installed successfully (Or already was), we can continue
        end;
        else begin
          //Some other error
          result := 'DirectX installation failed. Exit code ' + IntToStr(InstallerResult);
        end;
      end;
    end else begin
      result := 'DirectX installation failed. ' + SysErrorMessage(InstallerResult);
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

ISXKB有一篇关于如何检测已安装版本文章.