NSIS 脚本 - 检查 .Net Framework 4.8 是否存在并安装它

问题描述 投票:0回答:1

我是 NSIS 新手,正在学习编写一个使用 NSIS 软件实用工具创建 Windows 安装程序的脚本。

我有一个要求,我需要检查.NET Framework 4.8是否存在,从微软官方网站下载并仅在机器上不可用时安装它。如果计算机上有 .NET Framework 4.8 或更高版本,则应继续进行主应用程序安装过程。

我编写了以下脚本,但在安装过程中没有发生.NET Framework安装。

Section "CheckAndInstallDotNet"
    ; Define the registry key path for .NET Framework 4.8
    Var /GLOBAL NETFRAMEWORK48_REGKEY
    StrCpy $NETFRAMEWORK48_REGKEY "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"

    ; Check if .NET Framework 4.8 is installed by querying the Release key in the registry
    ClearErrors
    ReadRegDWORD $0 HKLM $NETFRAMEWORK48_REGKEY "Release"
    IfErrors not_installed
    IntCmp $0 528040 installed not_installed

    ; If .NET Framework 4.8 is already installed
    Goto done

installed:
    MessageBox MB_ICONINFORMATION ".NET Framework 4.8 is already installed on your system."
    Goto done
    
    ; Label for not installed
not_installed:
    MessageBox MB_ICONEXCLAMATION|MB_OK ".NET Framework 4.8 is not installed. The installer will now proceed to download and install it."
    NSISdl::download /TIMEOUT=30000 "https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net48-web-installer" "$TEMP\dotNetFramework48Installer.exe"
    ExecWait '"$TEMP\dotNetFramework48Installer.exe" /q /norestart'
done:
SectionEnd

我已经使用“HM NIS Edit”编译了脚本,脚本已成功编译并且Windows安装程序已创建。在执行 Windows 安装程序期间,我发现 .NET Framework 的下载与应用程序的安装同时进行。安装应用程序后,向导会自动关闭,并且不会检查 .NET Framework 是否安装。

您能否建议检查 .NET Framework 4.8 是否存在并安装它的脚本是否正确?另外,请向我提供有关依次执行步骤的建议,如下

  1. 检查 .NET Framework 4.8 或更高版本是否存在
  2. 如果框架存在,只需继续安装应用程序即可。
  3. 如果框架不存在,请下载.NET框架安装程序文件,安装它,等待安装完成并继续应用程序安装
nsis .net-4.8
1个回答
0
投票

您的注册表项路径不正确,因此您的安装程序始终认为未安装 .NET。不过,安装可能从未真正发生过,因为如果已经安装了较新的版本,.NET 安装程序就会停止。这可能就是为什么一切看起来都是同时发生的原因。

我通过进行这些更改使其正常工作:

  1. 更改密钥的路径
StrCpy $NETFRAMEWORK48_REGKEY "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
  1. 检查“Release”编号是否小于您所需的版本号,而不是您所做的 IntCmp
${If} $0 < "528040"
    Goto not_installed
${Else}
    Goto installed
${EndIf}

您可以删除此行,因为程序永远不会到达它

; If .NET Framework 4.8 is already installed
    Goto done
© www.soinside.com 2019 - 2024. All rights reserved.