一、检测.net以及VC++
[Files]
; VC Redistribute
Source: ".安装包vcredist2010x86.exe"; DestDir: "{tmp}"; Check: NeedInstallVC10
Source: ".安装包vcredist2013x86.exe"; DestDir: "{tmp}"; Check: NeedInstallVC13
; .net Framework
Source: ".安装包NDP452-x86-x64ENU.exe"; DestDir: "{tmp}"; Flags: ignoreversion {#IsExternal}; Check: NeedsFramework
[Run]
Filename: {tmp}NDP452-x86-x64ENU.exe; Parameters: "/q:a /c:""install /l /quiet"""; WorkingDir: {tmp}; Flags: skipifdoesntexist; StatusMsg: "Installing .NET Framework if needed"
Filename: {tmp}vcredist2010x86.exe; Parameters: "/q:a /c:""install /l /quiet"""; WorkingDir: {tmp}; Flags: skipifdoesntexist; StatusMsg: "Install Microsoft Visual C++ 2010 Runtime ...";
Filename: {tmp}vcredist2013x86.exe; Parameters: "/q:a /c:""install /l /quiet"""; WorkingDir: {tmp}; Flags: skipifdoesntexist; StatusMsg: "Install Microsoft Visual C++ 2013 Runtime ...";
[code]
//检测VC++
var
vc10SP1Missing: Boolean;
vc13SP1Missing: Boolean;
function NeedInstallVC10(): Boolean;
begin
Result := vc10SP1Missing;
end;
function NeedInstallVC13(): Boolean;
begin
Result := vc13SP1Missing;
end;
// 是否有.net4.0环境
function IsDotNET40Detected(): boolean;
var
success: boolean;
begin
success := RegKeyExists(HKLM, 'SOFTWAREMicrosoft.NETFrameworkPolicyv4.0');
Result := success;
end;
function NeedsFramework(): Boolean;
begin
Result := (IsDotNET40Detected = false );
end;
在函数 InitializeSetup()里给vc13SP1Missing与vc10SP1Missing赋值
//检测VC++2013
if RegValueExists(HKLM, 'SOFTWAREWOW6432NodeMicrosoftVisualStudio12.0VCRuntimesx86', 'Version') then
begin
vc13SP1Missing := false;
end
else
begin
vc13SP1Missing := true;
end;
//检测VC++2010
if RegValueExists(HKLM, 'SOFTWAREWOW6432NodeMicrosoftVisualStudio10.0VCVCRedistx86', 'Version') then
begin
vc10SP1Missing := false;
end
else
begin
vc10SP1Missing := true;
end;
ok完成。
评论