我是 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 是否存在并安装它的脚本是否正确?另外,请向我提供有关依次执行步骤的建议,如下
您的注册表项路径不正确,因此您的安装程序始终认为未安装 .NET。不过,安装可能从未真正发生过,因为如果已经安装了较新的版本,.NET 安装程序就会停止。这可能就是为什么一切看起来都是同时发生的原因。
我通过进行这些更改使其正常工作:
StrCpy $NETFRAMEWORK48_REGKEY "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
${If} $0 < "528040"
Goto not_installed
${Else}
Goto installed
${EndIf}
您可以删除此行,因为程序永远不会到达它
; If .NET Framework 4.8 is already installed
Goto done