2

Hi we are having this error. For a long time we tried to uninstall it and reinstall. It solved the problem but now an error 1603 comes.

If any one can help us with it we will be so thankful.

1
  • it solved by install from the cmd
    – khawlah
    Commented Feb 5, 2019 at 6:51

1 Answer 1

1

it looks like you have problem with installing prerequisities, here are scripts which I have used few times for installing SP2016 on WS2012 or WS2016.

Installing Features - this script you'll need to run few times till the progress bar be 100%:

#region Create Server 2012R2 Features Array
    function getServer2012R2Features {
        $windows2012R2Features = @(
            "Application-Server",
            "AS-NET-Framework",
            "AS-Web-Support",
            "FileAndStorage-Services",
            "Storage-Services",
            "Web-Server",
            "Web-WebServer",
            "Web-Common-Http",
            "Web-Default-Doc",
            "Web-Dir-Browsing",
            "Web-Http-Errors",
            "Web-Static-Content",
            "Web-Http-Redirect",
            "Web-Health",
            "Web-Http-Logging",
            "Web-Log-Libraries",
            "Web-Request-Monitor",
            "Web-Performance",
            "Web-Stat-Compression",
            "Web-Dyn-Compression",
            "Web-Security",
            "Web-Filtering",
            "Web-Basic-Auth",
            "Web-Client-Auth",
            "Web-Digest-Auth",
            "Web-Cert-Auth",
            "Web-IP-Security",
            "Web-Url-Auth",
            "Web-Windows-Auth",
            "Web-App-Dev",
            "Web-Net-Ext",
            "Web-Net-Ext45",
            "Web-Asp-Net45",
            "Web-ISAPI-Ext",
            "Web-ISAPI-Filter",
            "Web-Mgmt-Tools",
            "Web-Mgmt-Console",
            "Web-Mgmt-Compat",
            "Web-Metabase",
            "Web-Lgcy-Mgmt-Console",
            "Web-Lgcy-Scripting",
            "Web-WMI",
            "Web-Scripting-Tools",
            "NET-Framework-Features",
            "NET-Framework-Core",
            "NET-HTTP-Activation",
            "NET-Non-HTTP-Activ",
            "NET-Framework-45-Features",
            "NET-Framework-45-Core",
            "NET-Framework-45-ASPNET",
            "NET-WCF-Services45",
            "NET-WCF-HTTP-Activation45",
            "NET-WCF-TCP-PortSharing45",
            "FS-SMB1",
            "User-Interfaces-Infra",
            "Server-Gui-Mgmt-Infra",
            "Server-Gui-Shell",
            "Windows-Identity-Foundation",
            "PowerShellRoot",
            "PowerShell",
            "PowerShell-V2",
            "PowerShell-ISE",
            "WAS",
            "WAS-Process-Model",
            "WAS-NET-Environment",
            "WAS-Config-APIs",
            "WoW64-Support"        
        )
        return $windows2012R2Features
    }
#endregion
#region Create Server 2016 Features Array
    function getServer2016Features ($sku) {
        $windows2016Features = @(
            "FileAndStorage-Services"            
            "Storage-Services",                   
            "Web-Server",                         
            "Web-WebServer",                      
            "Web-Common-Http",                    
            "Web-Default-Doc",                    
            "Web-Dir-Browsing",                   
            "Web-Http-Errors",                    
            "Web-Static-Content",                 
            "Web-Health",                         
            "Web-Http-Logging",                   
            "Web-Log-Libraries",                  
            "Web-Request-Monitor",                
            "Web-Http-Tracing",                   
            "Web-Performance",                    
            "Web-Stat-Compression",               
            "Web-Dyn-Compression",     
            "Web-Security",
            "Web-Filtering",
            "Web-Basic-Auth",
            "Web-Client-Auth",
            "Web-Digest-Auth",
            "Web-Cert-Auth",
            "Web-IP-Security",
            "Web-Url-Auth",
            "Web-Windows-Auth",                
            "Web-App-Dev",                        
            "Web-Net-Ext",                        
            "Web-Net-Ext45",                      
            "Web-Asp-Net",                        
            "Web-Asp-Net45",                      
            "Web-ISAPI-Ext",                      
            "Web-ISAPI-Filter",                   
            "Web-Mgmt-Tools",                     
            "Web-Mgmt-Console",                   
            "Web-Mgmt-Compat",                    
            "Web-Metabase",                       
            "Web-Lgcy-Scripting",                 
            "Web-WMI",                            
            "NET-Framework-Features",            
            "NET-Framework-Core",                 
            "NET-HTTP-Activation",                
            "NET-Non-HTTP-Activ",                 
            "NET-Framework-45-Features",          
            "NET-Framework-45-Core",              
            "NET-Framework-45-ASPNET",            
            "NET-WCF-Services45",                 
            "NET-WCF-HTTP-Activation45",          
            "NET-WCF-Pipe-Activation45",          
            "NET-WCF-TCP-PortSharing45",                   
            "Server-Media-Foundation",            
            "FS-SMB1",                     
            "Windows-Identity-Foundation",        
            "PowerShellRoot",                     
            "PowerShell",             
            "PowerShell-V2",                      
            "PowerShell-ISE",                     
            "WAS",                                
            "WAS-Process-Model",                                     
            "WAS-NET-Environment",                
            "WAS-Config-APIs",                   
            "WoW64-Support",                      
            "XPS-Viewer"
        )
        # if OS is Enterprise
        if ($sku -eq 10) {
            $windows2016Features += ("InkAndHandwritingServices",
                                    "User-Interfaces-Infra", 
                                    "Server-Gui-Mgmt-Infra", 
                                    "Desktop-Experience", 
                                    "Server-Gui-Shell", 
                                    "Windows-Server-Antimalware-Features",
                                    "Windows-Server-Antimalware"
                                    )
            }
        return $windows2016Features                         
    }
#endregion
#region Get Server OS Information
    function setEnvironment {
        # Get OS Version Information
        $serverOS = ([environment]::OSVersion.Version)
        # Enterprise or Standard
        $OS = (Get-WmiObject -ComputerName $env:COMPUTERNAME -Class Win32_OperatingSystem)        
        $sku = $OS.OperatingSystemSKU
        # Server 2016
        if ($serverOS.Major -eq "10") {
                $windowsFeatures = @()
                $windowsFeatures = getServer2016Features -sku $sku
                $OS = $OS.Caption
                Write-Host("Adding features for $OS...")
        }
        # Server 2012R2
        if ($serverOS.Major -eq "6") {
                $windowsFeatures = @()
                $windowsFeatures = getServer2012R2Features
                $OS = (Get-WmiObject -ComputerName $env:COMPUTERNAME -Class Win32_OperatingSystem).Caption
                Write-Host("Adding features for $OS...")
        }
        # Add Windows Features
        $restart = Add-WindowsFeature (ForEach-Object{$windowsFeatures}) 
        if ($restart.RestartNeeded -ne "No") {
            #if reboot required...
            restartComputer
        }
    }
#endregion
#region Reboot Server
    function restartComputer {
        for ($i = 10; $i -gt 0; $i--) {
            Write-Host("$env:COMPUTERNAME will reboot in $i seconds")
            Start-Sleep -Seconds 1
        }
        Restart-Computer -Force
    }
#endregion
#region Call Functions
    setEnvironment
#endregion  

This download all prerequisities, you can also download them manually and save in the proper folder:

Import-Module BitsTransfer
$destPath = "C:\Install\Prere" # Change this to desired download destination path
$destPath = $destPath.TrimEnd('\')
#region validate download path
    function validatePath($destFolder){
        ## Check that the path entered is valid
        If (!(Test-Path $destFolder -Verbose)) {
            New-Item -Path $destFolder -ItemType Directory
        }
    }
#endregion
#region start downloading files
    function downloadFiles($urlList, $location) {
        # Downloads files based off of $urlList array and saves them to the location based off $location
        # This sets the $destFolder variable based off $location
        if ($location -eq "SPPR") {$destFolder = $destPath + "\SharePoint\downloads\prerequisiteinstallerfiles"}
        # Validate if path exists
        validatePath -destFolder $destFolder
        # Out-File path for later use...
        $destFolder | Out-File "$destPath\sp2016preReqPath.txt" -Force 
        ForEach ($url in $urlList) {
                ## Get the file name based on the portion of the url after the last slash
                $destFileName = $url.Split('/')[-1]
                $destination = "$destFolder\$destFileName"
                Try {
                    ## Check if destination file already exists
                    If (!(Test-Path $destination)) {
                        ## Begin download
                        Write-Host("Downloading " + $url)
                        Start-BitsTransfer -Source $url -Destination $destination -DisplayName "Downloading `'$destFileName`' to $destFolder" -Priority High -Description "From $url..." -ErrorVariable err
                        If ($err) {Throw ""}
                    }
                    Else {
                        # If file does exist is it WCF 5.6?                 
                        Write-Host " - File $destFileName already exists, skipping..."                        
                    }
                }
                Catch {
                    Write-Warning " - An error occurred downloading `'$destFileName`'" | Out-Null
                    $counter = 0
                    if ($counter -lt 3) {
                        $counter ++
                        Write-Warning("Retrying Download in 3 seconds...")
                        Start-Sleep -Seconds 3
                        downloadFiles -urlList $urlList -location $location
                    }
                    Else {
                        $counter = 0
                        break
                    }
                }
            }
        return $destFolder
    }
#endregion
#region create array of URLs for download
    function getSPPRurls() {
        ## Download SharePoint 2016 Prerequisite Installer files
        $SPPRList = ("https://download.microsoft.com/download/4/B/1/4B1E9B0E-A4F3-4715-B417-31C82302A70A/ENU/x64/sqlncli.msi",                                    # Microsoft SQL Server 2012 SP1 Native Client
                     "https://download.microsoft.com/download/B/9/D/B9D6E014-C949-4A1E-BA6B-2E0DEBA23E54/SyncSetup_en.x64.zip",                                   # Microsoft Sync Framework Runtime v1.0 SP1 (x64)
                     "https://download.microsoft.com/download/A/6/7/A678AB47-496B-4907-B3D4-0A2D280A13C0/WindowsServerAppFabricSetup_x64.exe",                    # Windows Server AppFabric 1.1
                     "https://download.microsoft.com/download/0/1/D/01D06854-CA0C-46F1-ADBA-EBF86010DCC6/rtm/MicrosoftIdentityExtensions-64.msi",                 # Microsoft Identity Extensions (Windows Identity Foundation v1.1)
                     "https://download.microsoft.com/download/3/C/F/3CF781F5-7D29-4035-9265-C34FF2369FA2/setup_msipc_x64.exe",                                    # Microsoft Information Protection and Control Client
                     "https://download.microsoft.com/download/F/1/0/F1093AF6-E797-4CA8-A9F6-FC50024B385C/AppFabric-KB3092423-x64-ENU.exe",                        # Cumulative Update 7 (KB3092423) for Microsoft AppFabric 1.1 for Windows Server 
                     "https://download.microsoft.com/download/1/C/A/1CAA41C7-88B9-42D6-9E11-3C655656DAB1/WcfDataServices.exe",                                    # Microsoft WCF Data Services 5.6
                     "https://download.microsoft.com/download/5/7/2/57249A3A-19D6-4901-ACCE-80924ABEB267/ENU/x64/msodbcsql.msi",                                  # Microsoft ODBC Driver 11 for SQL Server
                     "https://download.microsoft.com/download/C/3/A/C3A5200B-D33C-47E9-9D70-2F7C65DAAD94/NDP46-KB3045557-x86-x64-AllOS-ENU.exe",                  # Microsoft .NET Framework 4.6
                     "https://download.microsoft.com/download/3/C/F/3CF781F5-7D29-4035-9265-C34FF2369FA2/setup_msipc_x64.exe",                                    # Microsoft Information Protection and Control Client
                     "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe",                                 # Visual C++ Redistributable Package for Visual Studio 2012
                     "https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe"                                       # Visual C++ Redistributable for Visual Studio 2015 

        )
        $destURL = downloadFiles -urlList $SPPRList -location "SPPR"
        $bustedPOSH = !($destURL -is [string])
        if ($bustedPOSH) {
            Write-Host(" - Implementing PowerShell Bug Workaround...")
            $destURL = $destURL.FullName            
        }
        unzipSyncFiles -desturl $destURL
    }
#endregion
#region unzip files
    function unzipSyncFiles($destURL) {
        $destURL = $destURL.Trim()
        Add-Type -assembly "system.io.compression.filesystem"
        $zipBackUpPath = $destURL + "\SyncSetup_en.x64.zip"
        $zipDestination = $destURL + "\SyncSetup_en.x64"
        $path = $zipDestination + "\Microsoft Sync Framework\Synchronization.msi"
        $destination = $destURL + "\Synchronization.msi"
        if (Test-Path $destination) {
            Write-Host(" - Synchronization.msi is already extracted...")
        }
        if (!(Test-Path $destination)) {
            Write-Host(" - Extracting SyncSetup_en.x64.zip to: $zipDestination")
            if (Test-Path $zipDestination) {
                Write-Host("Removing Unzipped Folder from: $zipDestination")
                Remove-Item $zipDestination -Recurse -Force
            }
            [io.compression.zipfile]::ExtractToDirectory($zipBackUpPath, $zipDestination)
            Copy-Item -Path $path -Destination $destination
            Write-Host(" - Synchronization.msi unzipped and moved to prerequisiteinstallerfiles folder")
        }
    }
#endregion
#region Call Functions 
    validatePath -destFolder $destPath
    getSPPRurls
#endregion 

Last script install prerequisities, check variables:

# set variables
$sp2016Location = "E:\"  # Change to folder location of SharePoint prerequisiteinstaller.exe file
$destPath = "C:\tempDownloads"
$sp2016preReqPath = Get-Content "$destPath\sp2016preReqPath.txt"
Import-Module ServerManager
#region Create variable paths and copy files
    $sp2016preReqPath = $sp2016preReqPath.TrimEnd('\')
    $sp2016Location = $sp2016Location.TrimEnd('\')
    $filterLoc = $sp2016Location + "\prerequisiteinstallerfiles\filterpack"
    $filterDest = $sp2016preReqPath + "\prerequisiteinstallerfiles"
    $preLoc = $sp2016Location + "\prerequisiteinstaller.exe" 
    # Copy prerequisiteinstaller, Visual C++ dll, and filterpack
    Copy-Item "$sp2016Location\vcruntime140.dll" $sp2016preReqPath -Force
    Copy-Item $preLoc $sp2016preReqPath -Force
    Copy-Item $filterLoc $filterDest -Recurse -Force
#endregion
#region Install Prerequisites
    function installSP2016Files($path) { 

        $arguments = @(
                        "/unattended",  
                        "/SQLNCli:`"$path\sqlncli.msi`"",
                        "/Sync:`"$path\Synchronization.msi`"",
                        "/AppFabric:`"$path\WindowsServerAppFabricSetup_x64.exe`"",
                        "/IDFX11:`"$path\MicrosoftIdentityExtensions-64.msi`"",
                        "/MSIPCClient:`"$path\setup_msipc_x64.exe`"",
                        "/KB3092423:`"$path\AppFabric-KB3092423-x64-ENU.exe`"",
                        "/WCFDataServices56:`"$path\WcfDataServices.exe`"",
                        "/ODBC:`"$path\msodbcsql.msi`"",
                        "/DotNetFx:`"$path\NDP46-KB3045557-x86-x64-AllOS-ENU.exe`"",
                        "/MSVCRT11:`"$path\vcredist_x64.exe`"",
                        "/MSVCRT14:`"$path\vc_redist.x64.exe`""
                        )

        $setupFile = "$path\prerequisiteinstaller.exe"
        $cmd = "$setupFile $arguments"
        Start-Process $setupFile -ArgumentList $arguments -Verbose -Wait

        for ($i = 10; $i -gt 0; $i--) {
            Write-Host("$env:COMPUTERNAME will reboot in $i seconds")
            Start-Sleep -Seconds 1 
        }             
        Restart-Computer -Force          
    } 
#endregion
#region Check if files exist
    function checkPath($path) {
            # Check if destination path exists 
            If (!(Get-ChildItem -Path $path -ErrorAction -0).Exists) { 
                Write-Host("$path does not exist. Please validate the location and try agian.")
                exit
            }
    }
#endregion
#region call functions
   checkPath -path $sp2016preReqPath
   checkPath -path $preLoc
   installSP2016Files -path $sp2016preReqPath
#endregion

Hope it helps!

2
  • thank you for your help but we try it and does not solve it sadly
    – khawlah
    Commented Jan 29, 2019 at 11:44
  • the error message is still the same? Commented Jan 29, 2019 at 12:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.