Я хочу добавить vcredist_x64.exe и vcredist_x86.exe с помощью моего установщика Inno Setup. Как мой установщик определит ОС, будь то 64-битная или 32-битная, и установит файл vcredist в соответствии с ОС.
Обнаружение 64-битной или 32-битной ОС и установка файла vcredist VC10 с помощью установщика Inno Setup
Ответы (1)
Попробуй это:
в разделе [Файлы] добавить
Source: "vcredist_x86.exe"; DestDir: {tmp}; Flags: IgnoreVersion replacesameversion; Check: "not IsWin64";
Source: "vcredist_x64.exe"; DestDir: {tmp}; Flags: IgnoreVersion replacesameversion; Check:IsWin64;
и в разделе [Код] выполните:
function Launch_VCRedist(svDir:String) : Boolean;
var
svTargetApplication: String;
svParameter: String;
workingDir: String;
showCmd: Integer;
wait: TExecWait;
resultCode: Integer;
VersionMS, VersionLS : Cardinal;
Major, Minor, Rev, Build: Cardinal;
Version:String;
begin
Result := True;
//Optional: if you want to execute silently your redist.exe, add this. This is for vc_redist version from 2005 to 2012
GetVersionNumbers(svDir + '\vcredist_x86.exe', VersionMS, VersionLS);
Major := VersionMS shr 16;
case Major of
11: //2012
begin
svParameter := '/install /passive';
end
10: //2010
begin
svParameter := '/passive /showfinalerror';
end
6: //2005
begin
svParameter := '/q';
end
9: //2008
begin
svParameter := '/Q';
end
end;
workingDir := '';
showCmd := SW_SHOW;
wait := ewWaitUntilTerminated;
retVal := Exec(svDir + '\vcredist_x86.exe', svParameter, workingDir, showCmd, wait, resultCode)
if retVal then
begin
//handle success if necessary; resultCode contains the exit code
end
else begin
//handle failure if necessary; resultCode contains the error code
Result := False;
end;
end;
И в процедуру CurStepChanged добавляем:
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssPostInstall:
b_ret := Launch_VCRedist(ExpandConstant('{tmp}'));
if b_ret Then
begin
//Handle success if necessary
end
else begin
//Handle failure if necessary
end;
end;
end;
person
KingOfMazes
schedule
08.10.2015
Спасибо за ответ. В каком разделе я буду размещать ниже блок кода (И в процедуре CurStepChanged добавить:). Ответьте, пожалуйста.
- person user3606222; 26.12.2015
@user3606222 user3606222 Эти функции можно разместить везде в разделе [Код]. Если у вас уже есть функция CurStepChanged в разделе кода, добавьте b_ret := Launch_VCRedist(ExpandConstant('{tmp}')); как пример
- person KingOfMazes; 07.01.2016
Это опечатка?
Check: Check:IsWin64;
- person Sandburg; 21.11.2018