Inno Setup 判断.NET是否安装

原创 2015年11月19日 19:15:45

Inno Setup 判断.NET是否安装,如未安装则提示下载安装,且不继续执行安装步骤:

[Code]
function IsDotNetDetected(version: string; service: cardinal): boolean;
// Indicates whether the specified version and service pack of the .NET Framework is installed.
//
// version -- Specify one of these strings for the required .NET Framework version:
//    'v1.1.4322'     .NET Framework 1.1
//    'v2.0.50727'    .NET Framework 2.0
//    'v3.0'          .NET Framework 3.0
//    'v3.5'          .NET Framework 3.5
//    'v4\Client'     .NET Framework 4.0 Client Profile
//    'v4\Full'       .NET Framework 4.0 Full Installation
//
// service -- Specify any non-negative integer for the required service pack level:
//    0               No service packs required
//    1, 2, etc.      Service pack 1, 2, etc. required
var
    key: string;
    install, serviceCount: cardinal;
    success: boolean;
begin
    key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version;
    // .NET 3.0 uses value InstallSuccess in subkey Setup
    if Pos('v3.0', version) = 1 then begin
        success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
    end else begin
        success := RegQueryDWordValue(HKLM, key, 'Install', install);
    end;

    // .NET 4.0 uses value Servicing instead of SP
    if Pos('v4', version) = 1 then begin
        success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
    end else begin
        success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
    end;
    result := success and (install = 1) and (serviceCount >= service);
end;

function InitializeSetup(): Boolean;
var ErrorCode: Integer;
begin
    if not IsDotNetDetected('v4\Client', 0) then begin
        MsgBox('xxxTMS云平台需要安装微软Microsoft.NET Framework'#13#13
            '请点击确定,然后在打开的网页中下载并安装.NET Framework,'#13
            '在安装完成后再双击本安装文件继续安装xxxTMS云平台客户端。', mbInformation, MB_OK);
        //Path := ExpandConstant('{pf}\Internet Explorer\iexplore.exe'); 
        //Exec(Path, 'http://rj.baidu.com/soft/detail/15910.html?ald', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); 
        ShellExec('open', 'http://rj.baidu.com/soft/detail/15910.html?ald', '', '', SW_SHOW, ewNoWait, ErrorCode)
        result := false;
    end else begin
        result := true;
        MsgBox('您已经安装了' ,mbInformation, MB_OK);
    end;
end;

相关文章推荐

使用Inno Setup 打包.NET程序,并自动安装.Net Framework

Inno Setup 是一个windows系统下的安装包制作程序。它是免费的(而且允许免费用于商业用途)。官网网站:http://www.jrsoftware.org/ 虽然说.NET 可以使用...

Inno Setup安装、卸载时判断是否程序正在运行

var ErrorCode: Integer; IsRunning: Integer; // 安装时判断客户端是否正在运行 function InitializeSet...
  • Augusdi
  • Augusdi
  • 2013年02月02日 14:09
  • 6907

inno setup 安装前判断进程是否存在,以及停止相应进程

最近用inno setup想做一个exe,可是在安装之前要停止正在运行的相应进程,可是发现它自身的方法不能满足要求,终于在网上找到了相应的资料,在这里总结一下,方便以后使用。 1:如果我只是单纯的想...

[Other] Inno Setup 使用心德-一个完整的项目 包括.NET组建捆绑 去空格等

最近安排我弄程序的打包工作,然后叫我接触Inno Setup打包软件。 说实话,第一次弄,什么都不懂,就不断Baidu,当然很多都没有,只有看文档了! 前面打包程序部分都还好,都完成了,但...
  • qiujuer
  • qiujuer
  • 2013年12月16日 16:03
  • 2187

项目inno setup安装脚本,带检测.net framework

完全不懂delphi语言,只是看过这种安装脚本,搞了三天才搞好,各种测试,各种改,终于做出了一个比较完整的安装包。 要说,还是有很多改进的地方,比如没有使用procedure,inno setup可以...

一个比较完整的Inno Setup 安装脚本

[Setup] ; 注: AppId的值为单独标识该应用程序。 ; 不要为其他安装程序使用相同的AppId值。 ; (生成新的GUID,点击 工具|在IDE中生成GUID。) AppId={{...
  • jac3326
  • jac3326
  • 2016年09月09日 15:15
  • 5542

Inno Setup入门(十一)——完成安装后执行某些程序

有些时候我们的程序虽然能够很好的完成安装,但是程序的配置工作可能需要其他的一些程序来辅助完成,如果不执行这些程序,主程序就不能很好的完成工作,甚至不能完成工作,一个很明显的例子是,目前许多程序是通过N...
  • mail_cm
  • mail_cm
  • 2013年01月05日 15:10
  • 1041

用Inno Setup来解决.NetFramework安装问题

用Inno Setup来解决.NetFramework安装问题 2010-03-01 09:59:26 标签:.Net Framework Setup 休闲 Inno 原创作品,允许转载,转...

inno setup软件--教你如何制作一个漂亮的安装程序

当我们制作好一个课件或程序的时候就会想给它做漂亮的安装程序,特别是用AUTHORWARE制作的课件,由于必须把XTRAS目录下相关的文件与可执行文件一起提供,这时我们就需要给课件制作安装程序。而且制作...

用inno Setup做应用程序安装包的示例脚本(.iss文件)

用innoSetup做应用程序安装包的示例脚本(.iss文件),具体要看innoSetup附带的文档,好象是pascal语言写的脚本。 示例1(应用程序.exe,客户端安装):;{089D6802-...
  • Augusdi
  • Augusdi
  • 2013年02月02日 10:06
  • 3720
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Inno Setup 判断.NET是否安装
举报原因:
原因补充:

(最多只允许输入30个字)