diff --git a/windows/win_msi.ps1 b/windows/win_msi.ps1 new file mode 100644 index 00000000000..62770352082 --- /dev/null +++ b/windows/win_msi.ps1 @@ -0,0 +1,62 @@ +#!powershell +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +# WANT_JSON +# POWERSHELL_COMMON + +$params = Parse-Args $args; + +$result = New-Object psobject; +Set-Attr $result "changed" $false; + +If (-not $params.path.GetType) +{ + Fail-Json $result "missing required arguments: path" +} + +$extra_args = "" +If ($params.extra_args.GetType) +{ + $extra_args = $params.extra_args; +} + +If ($params.creates.GetType) +{ + If (Test-File $creates) + { + Exit-Json $result; + } +} + +$logfile = [IO.Path]::GetTempFileName(); +$stdoutfile = [IO.Path]::GetTempFileName(); +$stderrfile = [IO.Path]::GetTempFileName(); +msiexec.exe /i $params.path /qb /l $logfile $extra_args; + +Set-Attr $result "changed" $true; + +$logcontents = Get-Content $logfile; +Remove-Item $logfile; +$stdoutcontents = Get-Content $stdoutfile; +Remove-Item $stdoutfile; +$stderrcontents = Get-Content $stderrfile; +Remove-Item $stderrfile; + +Set-Attr $result "log" $logcontents; +Set-Attr $result "stdout" $stdoutcontents; +Set-Attr $result "stderr" $stderrcontents; + +Exit-Json $result;