1

我想使用 innosetup 从 Web 下载并安装 .netframework 4.5。我遵循了这些程序,1.我下载并安装了 InnoTools Downloader。2.In InitializeWizard 我声明

itd_init;
itd_addfile('http://go.microsoft.com/fwlink/?LinkId=225702',expandconstant('{tmp}\dotNetFx45_Full_x86_x64.exe'));
itd_downloadafter(10);

其中 10 是 curpageId。而在

NextButtonClick(CurPageID: Integer) i added ,
 if CurPageId=104 then begin

     `filecopy(expandconstant('{tmp}\dotNetFx45_Full_x86_x64.exe'),expandconstant('{app}\dotNetFx`45_Full_x86_x64.exe'),false);
     end

*现在我需要做的是,我想检查我的电脑中是否安装了.net framework 4.5,使用我如何检查的功能*

function Framework45IsNotInstalled(): Boolean;
var
 bVer4x5: Boolean;
 bSuccess: Boolean;
 iInstalled: Cardinal;
 strVersion: String;
 iPos: Cardinal;
 ErrorCode: Integer;

begin
 Result := True;
 bVer4x5 := False;

 bSuccess := RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Full', 'Install', iInstalled);
 if (1 = iInstalled) AND (True = bSuccess) then
  begin
    bSuccess := RegQueryStringValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Full', 'Version', strVersion);
    if (True = bSuccess) then
     Begin
        iPos := Pos('4.5.', strVersion);
        if (0 < iPos) then bVer4x5 := True;

     End
  end;

 if (True = bVer4x5) then begin
    Result := False;
end;
end;

我需要检查这个条件的地方,在我这边下载和安装.netframework 4.5的情况很好,我需要检查.net framework 4.5是否安装的唯一条件,在调用这个**itd_downloadafter(10)Where 10之前是 curpageId.**。如果.netframework 已经存在于我的最终用户电脑中,那么只有下载不会发生。我怎样才能完成这项任务?有任何想法吗?

4

1 回答 1

1

.NET 4.5 注册表中的发布版本号在 MSDN 中突出显示:http: //msdn.microsoft.com/en-us/library/hh925568 (v=vs.110).aspx

您的代码需要修改以查看上面 MDSN 文章中指定的注册表中的“ Release ”键,并且可以简化以检查该值。

function Framework45IsNotInstalled(): Boolean;
  var
   bSuccess: Boolean;
   regVersion: Cardinal;

  begin
    Result := True;

    bSuccess := RegQueryStringValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', regVersion);
    if (True = bSuccess) and (regVersion >= 378389) then begin
      Result := False;
    end;
  end;
end;

有关使用 Inno Setup 检查 .NET 版本号的更完整示例,您还可以查看这篇非常有用的文章中的代码:http: //kynosarges.org/DotNetVersion.html

于 2014-02-15T18:11:11.063 回答