Search code examples
windows-installer

Entire feature will be installed on local hard drive using PowerShell


I am trying to install web deploy on windows server using PowerShell. So I have this script.

$temp_path = "c:\azuredata\"

$wd_installer_url = "https://download.microsoft.com/download/0/1/D/01DC28EA-638C-4A22-A57B-4CEF97755C6C/WebDeploy_amd64_en-US.msi"

$wd_installer_file = $temp_path + [System.IO.Path]::GetFileName( $wd_installer_url )

$DataStamp = get-date -Format yyyyMMddTHHmmss
$logFile = '{0}-{1}.log' -f $wd_installer_file,$DataStamp

$MSIArguments = @(
    "/i"
    ('"{0}"' -f $wd_installer_file)
    "/qn"
    "/norestart"
    "/L*v"
    $logFile
)
Start-Process "msiexec.exe" -ArgumentList $MSIArguments -Wait -NoNewWindow

The webdeploy tool is installed. But when I look into it, all the features are not installed.

Add Features

Modify web deploy tool.

Modify installed Web deploy tool

Click change

click change

Select the features.

Select the features

As you can see all the features are not installed. Now matter how I manipulate the argument list of the powershell command, its not installing it fully. I had to later do this manually. Tried replacing /i with /a. But it did not help.

$MSIArguments = @(
    "/i"
    ('"{0}"' -f $wd_installer_file)
    "/qn"
    "/norestart"
    "/L*v"
    $logFile
)

Manuall modification of the installation

I am sure there must be a way for this. My automation workflow is stuck because of this. Any ideas what can be done? Looked into this document, but no clue.


Solution

  • Could you use ADDLOCAL=ALL? Something like (untested - on mobile):

    $MSIArguments = @(
        "/i"
        ('"{0}"' -f $wd_installer_file)
        "/qn"
        "/norestart"
        "ADDLOCAL=ALL"
        "/L*v"
        $logFile
    )
    

    Here is the ms docs reference.