Search code examples
.netdirectxnsis

NSIS script - download .NET framework, DirectX


Can a NSIS script download .NET and DirectX from microsoft, then install it?

I don't want to include the installers in my installer because they are huge.


Solution

  • Here's an example for .Net :

    Function GetDotnet ;// looks for local copy before downloading, returns path in $0
        Pop $0
        ${If} ${FileExists} "$InitDir\dotnetfx35.exe"
            StrCpy $0 "$InitDir\dotnetfx35.exe"
        ${ElseIf} ${FileExists} "$InitDir\dotnetfx35setup.exe"
            StrCpy $0 "$InitDir\dotnetfx35setup.exe"
        ${Else}         
            Call DownloadDotnet
            StrCpy $0 $0
        ${EndIf}
        Push $0
    FunctionEnd
    
    Function DownloadDotnet ;// downloads .Net, returns download path in $0
        NSISDL::download "${DotnetDownloadUrl}" "${TempDir}\dotnetfx35setup.exe"
        Pop $0  
        ${If} $0 == "cancel"
            Quit    
        ${EndIf} 
        StrCpy $0 "${TempDir}\dotnetfx35setup.exe"
        Push $0
    FunctionEnd 
    
    Function InstallDotnet ;// kicks off the .Net installer
        Pop $0
        Push $1 
        ExecWait '"$0" /norestart' $1       
    FunctionEnd