updates win_msi to allow install to wait

- adds additional wait param
- updates to use Start-Process to allow -Wait
	- this will wait for install/uninstall to complete before continue
This commit is contained in:
schwartzmx 2015-04-07 21:28:47 -05:00
parent 5f58240d17
commit 1f55b45edd
2 changed files with 36 additions and 3 deletions

View file

@ -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;

View file

@ -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
'''