• NSIS检测.NET Framework并在线下载


    Section -.NET Framework
      ;检测是否是需要的.NET Framework版本
      Call GetNetFrameworkVersion
      Pop $R1
      ;${If} $R1 < '2.0.50727'
      ;${If} $R1 < '3.5.30729.4926'
      ${If} $R1 < '4.0.30319'
      ;${If} $R1 < '4.5.52747'
        MessageBox MB_YESNO|MB_ICONQUESTION "此软件运行需要.NET Framework 4.0运行环境,但您机器上似乎没有安装此环境。$
    $
    您有两个选择:$
    $
    1.您自己到互联网上下载.NET Framework 4.0安装,然后再运行此软件$
    $
    2.使用此安装程序在线下载并安装.NET Framework 4.0$
    $
    $
    $
    现在在线下载并安装.NET Framework 4.0,请确认您的机器已连接互联网.继续吗?" IDNO +2
          Call DownloadNetFramework4
        ${ENDIF}
    SectionEnd
    
    Function GetNetFrameworkVersion
    ;获取.Net Framework版本支持
        Push $1
        Push $0
        ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv4Full" "Install"
        ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv4Full" "Version"
        StrCmp $0 1 KnowNetFrameworkVersion +1
        ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv3.5" "Install"
        ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv3.5" "Version"
        StrCmp $0 1 KnowNetFrameworkVersion +1
        ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv3.0Setup" "InstallSuccess"
        ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv3.0Setup" "Version"
        StrCmp $0 1 KnowNetFrameworkVersion +1
        ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv2.0.50727" "Install"
        ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv2.0.50727" "Version"
        StrCmp $1 "" +1 +2
        StrCpy $1 "2.0.50727.832"
        StrCmp $0 1 KnowNetFrameworkVersion +1
        ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv1.1.4322" "Install"
        ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv1.1.4322" "Version"
        StrCmp $1 "" +1 +2
        StrCpy $1 "1.1.4322.573"
        StrCmp $0 1 KnowNetFrameworkVersion +1
        ReadRegDWORD $0 HKLM "SOFTWAREMicrosoft.NETFrameworkpolicyv1.0" "Install"
        ReadRegDWORD $1 HKLM "SOFTWAREMicrosoft.NETFrameworkpolicyv1.0" "Version"
        StrCmp $1 "" +1 +2
        StrCpy $1 "1.0.3705.0"
        StrCmp $0 1 KnowNetFrameworkVersion +1
        StrCpy $1 "not .NetFramework"
        KnowNetFrameworkVersion:
        Pop $0
        Exch $1
    FunctionEnd
    
    Function DownloadNetFramework2
    ;下载 .NET Framework 2.0 SP2
      NSISdl::download /TRANSLATE2 '正在下载 %s' '正在连接...' '(剩余 1 秒)' '(剩余 1 分钟)' '(剩余 1 小时)' '(剩余 %u 秒)' '(剩余 %u 分钟)' '(剩余 %u 小时)' '已完成:%skB(%d%%) 大小:%skB 速度:%u.%01ukB/s' /TIMEOUT=7500 /NOIEPROXY 'http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe' '$TEMPNetFx20SP2_x86.exe'
      Pop $R0
      StrCmp $R0 "success" 0 +3
    
      SetDetailsPrint textonly
      DetailPrint "正在安装 .NET Framework 2.0 SP2..."
      SetDetailsPrint listonly
      ExecWait '$TEMPNetFx20SP2_x86.exe /quiet /norestart' $R1
      Delete "$TEMPNetFx20SP2_x86.exe"
    
    FunctionEnd
    
    Function DownloadNetFramework35
    ;下载 .NET Framework 3.5 SP1
      NSISdl::download /TRANSLATE2 '正在下载 %s' '正在连接...' '(剩余 1 秒)' '(剩余 1 分钟)' '(剩余 1 小时)' '(剩余 %u 秒)' '(剩余 %u 分钟)' '(剩余 %u 小时)' '已完成:%skB(%d%%) 大小:%skB 速度:%u.%01ukB/s' /TIMEOUT=7500 /NOIEPROXY 'http://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe' '$TEMPdotnetfx35.exe'
      Pop $R0
      StrCmp $R0 "success" 0 +2
    
      SetDetailsPrint textonly
      DetailPrint "正在安装 .NET Framework 3.5 SP1..."
      SetDetailsPrint listonly
      ExecWait '$TEMPdotnetfx35.exe /quiet /norestart' $R1
      Delete "$TEMPdotnetfx35.exe"
    
    FunctionEnd
    
    Function DownloadNetFramework4
    ;下载 .NET Framework 4.0
      NSISdl::download /TRANSLATE2 '正在下载 %s' '正在连接...' '(剩余 1 秒)' '(剩余 1 分钟)' '(剩余 1 小时)' '(剩余 %u 秒)' '(剩余 %u 分钟)' '(剩余 %u 小时)' '已完成:%skB(%d%%) 大小:%skB 速度:%u.%01ukB/s' /TIMEOUT=7500 /NOIEPROXY 'http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe' '$TEMPdotNetFx40_Full_x86_x64.exe'
      Pop $R0
      StrCmp $R0 "success" 0 +2
      
      SetDetailsPrint textonly
      DetailPrint "正在安装 .NET Framework 4.0 Full..."
      SetDetailsPrint listonly
      ExecWait '$TEMPdotNetFx40_Full_x86_x64.exe /quiet /norestart' $R1
      Delete "$TEMPdotNetFx40_Full_x86_x64.exe"
      
    FunctionEnd
    
    Function DownloadNetFramework45
    ;下载 .NET Framework 4.5
      NSISdl::download /TRANSLATE2 '正在下载 %s' '正在连接...' '(剩余 1 秒)' '(剩余 1 分钟)' '(剩余 1 小时)' '(剩余 %u 秒)' '(剩余 %u 分钟)' '(剩余 %u 小时)' '已完成:%skB(%d%%) 大小:%skB 速度:%u.%01ukB/s' /TIMEOUT=7500 /NOIEPROXY 'http://download.microsoft.com/download/E/2/1/E21644B5-2DF2-47C2-91BD-63C560427900/NDP452-KB2901907-x86-x64-AllOS-ENU.exe' '$TEMPNDP452-KB2901907-x86-x64-AllOS-ENU.exe'
      Pop $R0
      StrCmp $R0 "success" 0 +2
    
      SetDetailsPrint textonly
      DetailPrint "正在安装 .NET Framework 4.5.2 ..."
      SetDetailsPrint listonly
      ExecWait '$TEMPNDP452-KB2901907-x86-x64-AllOS-ENU.exe /quiet /norestart' $R1
      Delete "$TEMPNDP452-KB2901907-x86-x64-AllOS-ENU.exe"
    
    FunctionEnd
  • 相关阅读:
    Java反射研究(3)
    Java反射研究(2)
    Java反射研究(1)
    从百度文库中复制文本的方法
    jdk/bin中的native2ascii.exe使用
    EA经典入门教程
    JSP自定义标签(3)
    JSP自定义标签(1)
    将Java doc转换为chm的方法
    多态性——vptr和vtable
  • 原文地址:https://www.cnblogs.com/luoshupeng/p/3988013.html
Copyright © 2020-2023  润新知