diff --git a/windows/win_msi b/windows/win_msi new file mode 100644 index 00000000000..894d7e2fc7a --- /dev/null +++ b/windows/win_msi @@ -0,0 +1,53 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# (c) 2014, Matt Martz , and others +# +# 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 . + +# this is a windows documentation stub. actual code lives in the .ps1 +# file of the same name + +DOCUMENTATION = ''' +--- +module: win_msi +version_added: "1.7" +short_description: Installs and uninstalls Windows MSI files +description: + - Installs or uninstalls a Windows MSI file that is already located on the target server +options: + path: + description: + - File system path to the MSI file to install + required: true + state: + description: + - Whether the MSI file should be installed or uninstalled + choices: + - present + - absent + default: present +author: Matt Martz +''' + +EXAMPLES = ''' +# Install an MSI file +- win_msi: path=C:\\\\7z920-x64.msi + +# Uninstall an MSI file +- win_msi: path=C:\\\\7z920-x64.msi state=absent +''' + diff --git a/windows/win_msi.ps1 b/windows/win_msi.ps1 index 62770352082..d28ae85bd7f 100644 --- a/windows/win_msi.ps1 +++ b/windows/win_msi.ps1 @@ -1,4 +1,6 @@ #!powershell +# (c) 2014, Matt Martz , and others +# # This file is part of Ansible # # Ansible is free software: you can redistribute it and/or modify @@ -44,7 +46,14 @@ If ($params.creates.GetType) $logfile = [IO.Path]::GetTempFileName(); $stdoutfile = [IO.Path]::GetTempFileName(); $stderrfile = [IO.Path]::GetTempFileName(); -msiexec.exe /i $params.path /qb /l $logfile $extra_args; +if ($params.state.GetType -and $params.state -eq "absent") +{ + msiexec.exe /x $params.path /qb /l $logfile $extra_args; +} +Else +{ + msiexec.exe /i $params.path /qb /l $logfile $extra_args; +} Set-Attr $result "changed" $true;