从'程序和功能'启用.Net Framework 3.5 SP1。并使用NSIS安装它

时间:2017-07-31 05:13:35

标签: frameworks nsis silent-installer

我正在使用nsis为我的Windows窗体应用程序创建安装程序。我需要.Net Framework 3.5 SP1作为我的应用程序的先决条件。所以使用NSIS我检查它是否在客户端机器上可用。如果没有,那么它将默默安装它。但它给了我一个错误。我知道.Net Framework 3.5 SP1需要从“程序和功能”中启用。在控制面板中。

那我怎样才能启用功能' .NET FRAMEWORK 3.5'从控制面板使用NSIS脚本。

检查并安装.Net Framework 3.5 SP1的我的部分是:

 section
    SetOutPath "$temp\Pre_requisites"
    ; check and install .Net Framework 3.5SP1
    ReadRegStr $R1 HKLM "Software\Microsoft\NET Framework Setup\NDP\v3.5" "SP"
    ${If} $R1 != "1"
                   DetailPrint "Microsoft .NET Framework 3.5 SP1 needed. Installing..."              
                   File "$temp\Pre_requisites\dotnetfx35.exe"      
                   ExecWait '"$temp\Pre_requisites\dotnetfx35.exe" /q /norestart'
    ${Else}
    DetailPrint "Microsoft .NET Framework 3.5 SP1 Found."
    ${EndIf}
 sectionend

错误信息是(我在Windows 7 SP1 64位中试过这个):

enter image description here

谢谢..!

2 个答案:

答案 0 :(得分:2)

默认情况下,近99.9%的Windows 7安装都安装了.Net 3.5。因为它是一个内置于源中的功能。 请检查注册表以找出.net的确切版本。如果您确实需要在Windows 7下安装.net 3.5,请查看https://technet.microsoft.com/de-de/library/dn482069.aspx。因为您需要使用DSIM在Windows 7下安装.net 3.5。安装程序仅适用于Windows XP及更低版本。

答案 1 :(得分:1)

执行以下代码。它通过命令提示符为.Net Framework 3.5在线安装执行带有启用功能参数的dism.exe。

     section
        ; check and install .Net Framework 3.5SP1
        ReadRegStr $R1 HKLM "Software\Microsoft\NET Framework Setup\NDP\v3.5" "SP"
        ${If} $R1 != "1"
                       DetailPrint "Microsoft .NET Framework 3.5 SP1 needed. Installing..."              
                       nsExec::Exec 'cmd /c %windir%\system32\dism.exe /Online /Enable-Feature /FeatureName:NetFx3 /All'   
        ${Else}
        DetailPrint "Microsoft .NET Framework 3.5 SP1 Found."
        ${EndIf}
     sectionend