diff --git a/windows/win_msi.ps1 b/windows/win_msi.ps1 index 1c2bc8a3019..7467aa31daa 100644 --- a/windows/win_msi.ps1 +++ b/windows/win_msi.ps1 @@ -23,12 +23,18 @@ $params = Parse-Args $args; $result = New-Object psobject; Set-Attr $result "changed" $false; +$wait = $false If (-not $params.path.GetType) { Fail-Json $result "missing required arguments: path" } +If ($params.wait -eq "true" -Or $params.wait -eq "yes") +{ + $wait = $true +} + $extra_args = "" If ($params.extra_args.GetType) { @@ -44,13 +50,27 @@ If ($params.creates.GetType -and $params.state.GetType -and $params.state -ne "a } $logfile = [IO.Path]::GetTempFileName(); -if ($params.state.GetType -and $params.state -eq "absent") +If ($params.state.GetType -and $params.state -eq "absent") { - msiexec.exe /x $params.path /qb /l $logfile $extra_args; + If ($wait) + { + Start-Process -FilePath msiexec.exe -ArgumentList "/x $params.path /qb /l $logfile $extra_args" -Verb Runas -Wait; + } + Else + { + Start-Process -FilePath msiexec.exe -ArgumentList "/x $params.path /qb /l $logfile $extra_args" -Verb Runas; + } } Else { - msiexec.exe /i $params.path /qb /l $logfile $extra_args; + If ($wait) + { + Start-Process -FilePath msiexec.exe -ArgumentList "/i $params.path /qb /l $logfile $extra_args" -Verb Runas -Wait; + } + Else + { + Start-Process -FilePath msiexec.exe -ArgumentList "/i $params.path /qb /l $logfile $extra_args" -Verb Runas; + } } Set-Attr $result "changed" $true; diff --git a/windows/win_msi.py b/windows/win_msi.py index 9eb6f1bafa5..00894a504d2 100644 --- a/windows/win_msi.py +++ b/windows/win_msi.py @@ -45,6 +45,16 @@ options: description: - Path to a file created by installing the MSI to prevent from attempting to reinstall the package on every run + wait: + version_added: "" + description: + - Specify whether to wait for install or uninstall to complete before continuing. + choices: + - true + - yes + - false + - no + default: false author: Matt Martz ''' @@ -52,6 +62,9 @@ EXAMPLES = ''' # Install an MSI file - win_msi: path=C:\\\\7z920-x64.msi +# Install an MSI, and wait for it to complete before continuing +- win_msi: path=C:\\\\7z920-x64.msi wait=true + # Uninstall an MSI file - win_msi: path=C:\\\\7z920-x64.msi state=absent '''