here is new example, without XML module, if you use IS 5.5.4, you can uncommend first line to make this example better
Code:
;#define InnoSetup5_5_4
[Setup]
AppName=Get_SYS_INFO
AppVersion=0.1b
CreateAppDir=no
VersionInfoDescription=altef_4
OutputBaseFilename=Get_SYS_INFO
OutputDir=.
[Icons]
Name: {userdesktop}\Far Cry 3 DX9; Filename: {app}\bin\FarCry3.exe; Parameters: -offline; WorkingDir: {app}\bin; Check: DX9;
Name: {userdesktop}\Far Cry 3 DX11; Filename: {app}\bin\FarCry3_D3D11.exe; Parameters: -offline; WorkingDir: {app}\bin; Check: DX11;
[Code]
var GetDXV:integer;
function DX9:boolean;
begin
if GetDXV>=9 then Result:=True else Result:=False;
end;
function DX10:boolean;
begin
if GetDXV>=10 then Result:=True else Result:=False;
end;
function DX11:boolean;
begin
if GetDXV>=11 then Result:=True else Result:=False;
end;
function GetDX:Integer;
var
dxv:string;
buf:ansistring;
begin
Result:=9;
while Not FileExists(ExpandConstant('{tmp}')+'\dxdiag.txt') do Sleep(100);
LoadStringFromFile(ExpandConstant('{tmp}')+'\dxdiag.txt',buf);
delete(buf,1,Pos('DDI Version: ',buf));
dxv:=Copy(buf,13,2);
StringChange(dxv,#13,'');
Result:=StrToIntDef(dxv,9);
end;
function InitializeSetup(): Boolean;
var
res:integer;
begin
Exec(ExpandConstant('{win}\system32\dxdiag.exe'),'/whql:off /t '+ExpandConstant('{tmp}')+'\dxdiag.txt',ExpandConstant('{tmp}'),0,ewNoWait,res)
Result:=True;
end;
#ifdef InnoSetup5_5_4
procedure CurInstallProgressChanged(CurProgress, MaxProgress: Integer);
begin
if CurProgress = MaxProgress-1 then GetDXV:=GetDX;
end;
#else
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then GetDXV:=GetDX;
end;
#endif