| Parameter | Choices/Defaults | Comments | 
|---|---|---|
| arguments  string  | Any arguments the installer needs to either install or uninstall the package. If the package is an MSI do not supply the  /qn,/logor/norestartarguments.As of Ansible 2.5, this parameter can be a list of arguments and the module will escape the arguments as necessary, it is recommended to use a string when dealing with MSI packages due to the unique escaping issues with msiexec. | |
| chdir  path  added in 2.8 | Set the specified path as the current working directory before installing or uninstalling a package. | |
| creates_path  path  added in 2.4 | Will check the existence of the path specified and use the result to determine whether the package is already installed. You can use this in conjunction with  product_idand othercreates_*. | |
| creates_service  string  added in 2.4 | Will check the existing of the service specified and use the result to determine whether the package is already installed. You can use this in conjunction with  product_idand othercreates_*. | |
| creates_version  string  added in 2.4 | Will check the file version property of the file at  creates_pathand use the result to determine whether the package is already installed.creates_pathMUST be set and is a file.You can use this in conjunction with  product_idand othercreates_*. | |
| expected_return_code  list  | Default: [0, 3010] | One or more return codes from the package installation that indicates success. Before Ansible 2.4 this was just 0 but since Ansible 2.4 this is both  0and3010.A return code of  3010usually means that a reboot is required, thereboot_requiredreturn value is set if the return code is3010. | 
| log_path  path  added in 2.8 | Specifies the path to a log file that is persisted after an MSI package is installed or uninstalled. When omitted, a temporary log file is used for MSI packages. This is only valid for MSI files, use  argumentsfor other package types. | |
| password  string  | The password for  user_name, must be set whenuser_nameis.aliases: user_password | |
| path  string  | Location of the package to be installed or uninstalled. This package can either be on the local file system, network share or a url. If the path is on a network share and the current WinRM transport doesn't support credential delegation, then  user_nameanduser_passwordmust be set to access the file.There are cases where this file will be copied locally to the server so it can access it, see the notes for more info. If  state=presentthen this value MUST be set.If  state=absentthen this value does not need to be set ifproduct_idis. | |
| product_id  string  | The product id of the installed packaged. This is used for checking whether the product is already installed and getting the uninstall information if  state=absent.You can find product ids for installed programs in the Windows registry editor either at  HKLM:Software\Microsoft\Windows\CurrentVersion\Uninstallor for 32 bit programs atHKLM:Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall.This SHOULD be set when the package is not an MSI, or the path is a url or a network share and credential delegation is not being used. The  creates_*options can be used instead but is not recommended.aliases: productid | |
| state  string  | 
 | Whether to install or uninstall the package. The module uses  product_idand whether it exists at the registry path to see whether it needs to install or uninstall the package.aliases: ensure | 
| username  string  | Username of an account with access to the package if it is located on a file share. This is only needed if the WinRM transport is over an auth method that does not support credential delegation like Basic or NTLM. aliases: user_name | |
| validate_certs  boolean  added in 2.4 | 
 | If  no, SSL certificates will not be validated. This should only be used on personally controlled sites using self-signed certificates.Before Ansible 2.4 this defaulted to  no. | 
Note
state=absent and the product is an exe, the path may be different from what was used to install the package originally. If path is not set then the path used will be what is set under UninstallString in the registry for that product_id./log, /qn, /norestart.win_package.product_id and creates_* add together, if one fails then the program is considered to be absent.See also
- name: Install the Visual C thingy
  win_package:
    path: http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe
    product_id: '{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}'
    arguments: /install /passive /norestart
- name: Install Visual C thingy with list of arguments instead of a string, and permanent log
  win_package:
    path: http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe
    product_id: '{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}'
    arguments:
    - /install
    - /passive
    - /norestart
    log_path: D:\logs\vcredist_x64-exe-{{lookup('pipe', 'date +%Y%m%dT%H%M%S')}}.log
- name: Install Remote Desktop Connection Manager from msi
  win_package:
    path: https://download.microsoft.com/download/A/F/0/AF0071F3-B198-4A35-AA90-C68D103BDCCF/rdcman.msi
    product_id: '{0240359E-6A4C-4884-9E94-B397A02D893C}'
    state: present
- name: Uninstall Remote Desktop Connection Manager
  win_package:
    product_id: '{0240359E-6A4C-4884-9E94-B397A02D893C}'
    state: absent
- name: Install Remote Desktop Connection Manager locally omitting the product_id
  win_package:
    path: C:\temp\rdcman.msi
    state: present
- name: Uninstall Remote Desktop Connection Manager from local MSI omitting the product_id
  win_package:
    path: C:\temp\rdcman.msi
    state: absent
# 7-Zip exe doesn't use a guid for the Product ID
- name: Install 7zip from a network share specifying the credentials
  win_package:
    path: \\domain\programs\7z.exe
    product_id: 7-Zip
    arguments: /S
    state: present
    user_name: DOMAIN\User
    user_password: Password
- name: Install 7zip and use a file version for the installation check
  win_package:
    path: C:\temp\7z.exe
    creates_path: C:\Program Files\7-Zip\7z.exe
    creates_version: 16.04
    state: present
- name: Uninstall 7zip from the exe
  win_package:
    path: C:\Program Files\7-Zip\Uninstall.exe
    product_id: 7-Zip
    arguments: /S
    state: absent
- name: Uninstall 7zip without specifying the path
  win_package:
    product_id: 7-Zip
    arguments: /S
    state: absent
- name: Install application and override expected return codes
  win_package:
    path: https://download.microsoft.com/download/1/6/7/167F0D79-9317-48AE-AEDB-17120579F8E2/NDP451-KB2858728-x86-x64-AllOS-ENU.exe
    product_id: '{7DEBE4EB-6B40-3766-BB35-5CBBC385DA37}'
    arguments: '/q /norestart'
    state: present
    expected_return_code: [0, 666, 3010]
   Common return values are documented here, the following are the fields unique to this module:
| Key | Returned | Description | 
|---|---|---|
| log  string  | installation/uninstallation failure for MSI packages | The contents of the MSI log. Sample: Installation completed successfully | 
| rc  integer  | change occurred | The return code of the package process. | 
| reboot_required  boolean  | always | Whether a reboot is required to finalise package. This is set to true if the executable return code is 3010. Sample: True | 
| stderr  string  | failure during install or uninstall | The stderr stream of the package process. Sample: Failed to install program | 
| stdout  string  | failure during install or uninstall | The stdout stream of the package process. Sample: Installing program | 
More information about Red Hat’s support of this module is available from this Red Hat Knowledge Base article.
Hint
If you notice any issues in this documentation, you can edit this document to improve it.
    © 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
    https://docs.ansible.com/ansible/2.9/modules/win_package_module.html