InnoSetup自动检测并安装.Net Framework

InnoSetup可在在脚本中插入[Code]代码段,其中的代码可以通过事件驱动,支持的主要事件如下:

function InitializeSetup(): Boolean; ——安装程序初始化,返回值决定安装程序是否继续执行。
function NextButtonClick(CurPageID: Integer): Boolean; ——点击下一步按钮,返回值决定安装程序是否继续执行。
function BackButtonClick(CurPageID: Integer): Boolean; ——点击上一步按钮,返回值决定安装程序是否继续执行。
function InitializeUninstall(): Boolean; ——卸载程序初始化,返回值决定卸载程序是否继续执行。
...
从这些事件我们可以看到InitializeSetup()满足我们的要求,我们可以在这个时候去检查注册表或者是系统文件来判断客户机器上是否安装了.Net Framework,从而进行自动安装或者下载安装的操作。

[Code]

function InitializeSetup: Boolean;
  var
    Path,tmppath:string ;
    ResultCode: Integer;
    dotNetV2RegPath:string;
    dotNetV2DownUrl:string;
    dotNetV2PackFile:string;
begin

  dotNetV2RegPath:=‘SOFTWARE\Microsoft\.NETFramework\Policy\v4.0‘;
  dotNetV2DownUrl:=‘http://dl1sw.baidu.com/soft/9b/15910/Microsoft.NET.exe?version=585709662‘;
  dotNetV2PackFile:=‘{src}\dotNetFx40_Full_x86_x64.exe‘;

  //先在注册表查找.net4.0是否存在
  if RegKeyExists(HKLM, dotNetV2RegPath) then
  begin
    Result := true;
  end

  //如果注册表里面没有发现.net4.0
  else
    begin
      if MsgBox(‘系统检测到您没有安装.Net Framework4.0运行环境,是否立即安装?‘, mbConfirmation, MB_YESNO) = idYes then
       begin
          //和setup同级目录下的donet安装包
          Path := ExpandConstant(dotNetV2PackFile);
          //先抽取到临时目录
          tmppath :=  ExpandConstant(‘{tmp}\dotNetFx40_Full_x86_x64.exe‘);
          ExtractTemporaryFile(‘dotNetFx40_Full_x86_x64.exe‘);

          msgbox(tmppath, mbConfirmation, MB_YESNO);
          Exec(tmppath, ‘‘, ‘‘, SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);

          if(FileOrDirExists(tmppath)) then
          begin
            Exec(tmppath, ‘/q‘, ‘‘, SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
          if RegKeyExists(HKLM, dotNetV2RegPath) then
          begin
            Result := true;
          end
        else
        begin
           MsgBox(‘未能成功安装.Net Framework4.0运行环境,系统将无法运行,本安装程序即将退出!‘,mbInformation,MB_OK);
        end
      end
      else
      begin
        if MsgBox(‘软件安装目录中没有包含.Net Framework4.0的安装程序,是否立即下载后安装?‘, mbConfirmation, MB_YESNO) = idYes then
        begin
          Path := ExpandConstant(‘{pf}/Internet Explorer/iexplore.exe‘);
          Exec(Path, dotNetV2DownUrl , ‘‘, SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
          MsgBox(‘请安装好.Net Framework4.0环境后,再运行本安装包程序!‘,mbInformation,MB_OK);
          Result := false;
        end
        else
        begin
          MsgBox(‘不下载安装.Net Framework4.0运行环境,系统将无法运行,本安装程序即将退出!‘,mbInformation,MB_OK);
          Result := false;
        end
      end
    end
    else
    begin
      MsgBox(‘没有安装.Net Framework2.0运行环境,系统将无法运行,本安装程序即将退出!‘,mbInformation,MB_OK);
      Result := false;
    end;

  end;

end;

参考链接1:http://blog.csdn.net/hualei/article/details/2628312

参考链接2:http://zhoufoxcn.blog.51cto.com/792419/279243/  

时间: 2025-01-17 02:55:09

InnoSetup自动检测并安装.Net Framework的相关文章

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

使用Inno Setup 打包.NET程序,并自动安装.Net Framework http://www.cnblogs.com/xiaogangqq123/archive/2012/03/19/2405730.html Inno Setup是什么 Inno Setup 是一个windows系统下的安装包制作程序.它是免费的(而且允许免费用于商业用途).官网网站:http://www.jrsoftware.org/ 虽然说.NET 可以使用VS来打包安装包,但可定制化绝对不如Inno Setup

vs.net打包(自动检测环境并安装.net framwork)

vs.net打包程序或者制作安装程序时自动检测环境并安装.net framwork的设置方法之前我看过文档也做过,但是过一段时间又忘了,现在终于又找到方法了,还是把这个方法写下来吧,方便自己也方便大家将来查询用. vs.net打包或者制作安装程序时进行自动检测环境并安装.net framwork的设置方法: 1. 新建一个“安装和部署”的项目: 2. 然后点击“视图”菜单,选择“编辑器”--“文件系统”,然后将要打包的程序以及相关文件添加进来,之后程序将自动检测依赖项: 3. 再次选择“视图”菜

检测是否安装了 .NET Framework 3.5

此脚本是为 Internet Explorer 设计的.    其他浏览器可能在 UserAgent 字符串中不包含 .NET CLR 信息. <HTML> <HEAD> <TITLE>Test for the .NET Framework 3.5</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" /> &l

HOWTO: 在 Windows Server 2012 上安装 dotNET Framework v3.5

微软发布 Windows Server 2012 RTM 已经有一段时间,在微软向 MSDN&Technet订阅用户以及MPN.MVL 用户提供 RTM 后,大规模的部署和升级开始了!相信大家或多或少都会遇到了一些问题,而今天要与大家分享的便是如何在 Windows Server 2012 上安装 dotNET Framework v3.5(包含 v2.0 和 v3.0). 提及这个问题首先要先回顾一下之前的 情况 - 早先在 Windows Server 2008 R2 上,如果要安装 dot

在 Windows Server 2012 上安装 dotNET Framework v3.5

微软发布 Windows Server 2012 RTM 已经有一段时间,在微软向 MSDN&Technet订阅用户以及MPN.MVL 用户提供 RTM 后,大规模的部署和升级开始了!相信大家或多或少都会遇到了一些问题,而今天要与大家分享的便是如何在 Windows Server 2012 上安装 dotNET Framework v3.5(包含 v2.0 和 v3.0). 提及这个问题首先要先回顾一下之前的情况 - 早先在 Windows Server 2008 R2 上,如果要安装 dotN

用 .Net Framework 4.0 制作的安装程序来安装 .Net Framework 4.0 编写的程序

文章题目看起来有点绕,解释一下,假如你基于框架写了一个程序,想装到客户机上,但是客户机上可能并没有安装框架,因此你的程序需要预先将框架安装在目标机上,然后再执行一些安装程序的标准功能,如创建快捷方式.创建程序组.写入卸载信息以便让Windows能够对程序进行卸载管理等,实现这个功能的方法有很多,例如使用InstallShield.Wix Toolset等均可实现此功能. 不过本文并不是介绍使用这些工具的方法,而是要使用框架来编写一个安装程序,实现一般安装程序的复制文件.创建快捷方式.创建程序组.

Win10无法安装.net framework 3.5出错提示无法安装以下功能该怎么办?

在Windows操作系统中,.NET Framewor对今天应用程序的成功提供了的安全解决方案,它能强化两个安全模型间的平衡.在提供对资源的访问,以便以完成有用的工作,对应用程序的安全性作细致的控制以确保代码被识别,检测,并给予合适的安全级别.起到了非常大的作用.最近使用WIn 10的用户反应,在安装.net framework 3.5的时候弹出了"无法安装一下功能" .NET Frameword 3.5 Windows 找不到完成请求的更改所需的文件.请确保你连接到 Internet

iOS内存泄漏自动检测工具PLeakSniffer

http://www.cocoachina.com/ios/20160706/16951.html 本文授权转自MrPeak技术分享(公众号:MrPeakTech) 新款Objective-C内存泄漏自动检测工具PLeakSniffer,GitHub地址. 背景 前些天读到WeRead团队分享的一款内存泄漏检测工具MLeaksFinder,恍惚想起早些时候自己也有过编写这样一个小工具的想法,不知道由于什么原因把这事给忘记了.在仔细读过MLeaksFinder源码,了解实现思路之后,发现和自己最初

在 Windows 8 或 8.1 上安装 .NET Framework 3.5

转载请标明,http://www.gxabase.com 如果您使用的是 Windows 操作系统,则您的计算机上可能已安装 .NET Framework.具体而言,.NET Framework 4.5 是 Windows 8 附带的,并会随 Windows 8 操作系统一起安装到您的计算机上.  同样,.NET Framework 4.5.1 是 Windows 8.1附带的. 重要事项:未提供适用于 Windows 8 或 Windows 8.1的 .NET Framework 3.5 的下