salt.modules.win_pkg

A module to manage software on Windows

Important

If you feel that Salt should be using this module to manage packages on a minion, and it is using a different module (or gives an error similar to 'pkg.install' is not available), see here.

depends:
  • win32com
  • win32con
  • win32api
  • pywintypes
salt.modules.win_pkg.compare_versions(ver1='', oper='==', ver2='')

Compare software package versions

salt.modules.win_pkg.genrepo(saltenv='base')

Generate winrepo_cachefile based on sls files in the winrepo

CLI Example:

salt-run winrepo.genrepo
salt.modules.win_pkg.get_name_map()
salt.modules.win_pkg.get_repo_data(saltenv='base')

Returns the cached winrepo data

CLI Example:

salt '*' pkg.get_repo_data
salt.modules.win_pkg.install(name=None, refresh=False, pkgs=None, saltenv='base', **kwargs)

Install the passed package(s) on the system using winrepo

Parameters:
  • name (str, list, or None) -- The name of a single package, or a comma-separated list of packages to install. (no spaces after the commas)
  • version (str) -- The specific version to install. If omitted, the latest version will be installed. If passed with multiple install, the version will apply to all packages. Recommended for single installation only.
  • refresh (bool) -- Boolean value representing whether or not to refresh the winrepo db
  • pkgs (list or None) -- A list of packages to install from a software repository. All packages listed under pkgs will be installed via a single command.
  • saltenv (str) -- The salt environment to use. Default is base.
  • kwargs (dict) -- Any additional argument that may be passed from the state module. If they don't apply, they are ignored.
Returns:

Return a dict containing the new package names and versions:

Return type:

dict

If the package is installed by pkg.install:

{'<package>': {'old': '<old-version>',
               'new': '<new-version>'}}

If the package is already installed:

{'<package>': {'current': '<current-version>'}}

The following example will refresh the winrepo and install a single package, 7zip.

CLI Example:

salt '*' pkg.install 7zip refresh=True

CLI Example:

salt '*' pkg.install 7zip
salt '*' pkg.install 7zip,filezilla
salt '*' pkg.install pkgs='["7zip","filezilla"]'
salt.modules.win_pkg.latest_version(*names, **kwargs)

Return the latest version of the named package available for upgrade or installation. If more than one package name is specified, a dict of name/version pairs is returned.

If the latest version of a given package is already installed, an empty string will be returned for that package.

CLI Example:

salt '*' pkg.latest_version <package name>
salt '*' pkg.latest_version <package1> <package2> <package3> ...
salt.modules.win_pkg.list_available(*names)

Return a list of available versions of the specified package.

CLI Example:

salt '*' pkg.list_available <package name>
salt '*' pkg.list_available <package name01> <package name02>
salt.modules.win_pkg.list_pkgs(versions_as_list=False, **kwargs)

List the packages currently installed in a dict:

{'<package_name>': '<version>'}

CLI Example:

salt '*' pkg.list_pkgs
salt '*' pkg.list_pkgs versions_as_list=True
salt.modules.win_pkg.list_upgrades(refresh=True, **kwargs)

List all available package upgrades on this system

CLI Example:

salt '*' pkg.list_upgrades
salt.modules.win_pkg.purge(name=None, pkgs=None, version=None, **kwargs)

Package purges are not supported, this function is identical to remove().

name
The name of the package to be deleted.
version
The version of the package to be deleted. If this option is used in combination with the pkgs option below, then this version will be applied to all targeted packages.

Multiple Package Options:

pkgs
A list of packages to delete. Must be passed as a python list. The name parameter will be ignored if this option is passed.

New in version 0.16.0.

Returns a dict containing the changes.

CLI Example:

salt '*' pkg.purge <package name>
salt '*' pkg.purge <package1>,<package2>,<package3>
salt '*' pkg.purge pkgs='["foo", "bar"]'
salt.modules.win_pkg.refresh_db(saltenv='base')

Just recheck the repository and return a dict:

{'<database name>': Bool}

CLI Example:

salt '*' pkg.refresh_db
salt.modules.win_pkg.remove(name=None, pkgs=None, version=None, **kwargs)

Remove the passed package(s) from the system using winrepo

Parameters:
  • name (str, list, or None) -- The name of the package to be uninstalled.
  • version (str) -- The version of the package to be uninstalled. If this option is used to to uninstall multiple packages, then this version will be applied to all targeted packages. Recommended using only when uninstalling a single package. If this parameter is omitted, the latest version will be uninstalled.

Multiple Package Options:

Parameters:pkgs (list or None) -- A list of packages to delete. Must be passed as a python list. The name parameter will be ignored if this option is passed.

New in version 0.16.0.

Returns:Returns a dict containing the changes.
Return type:dict

If the package is removed by pkg.remove:

{'<package>': {'old': '<old-version>',
'new': '<new-version>'}}

If the package is already uninstalled:

{'<package>': {'current': 'not installed'}}

CLI Example:

salt '*' pkg.remove <package name>
salt '*' pkg.remove <package1>,<package2>,<package3>
salt '*' pkg.remove pkgs='["foo", "bar"]'
salt.modules.win_pkg.upgrade(refresh=True)

Run a full system upgrade

Return a dict containing the new package names and versions:

{'<package>': {'old': '<old-version>',
               'new': '<new-version>'}}

CLI Example:

salt '*' pkg.upgrade
salt.modules.win_pkg.upgrade_available(name)

Check whether or not an upgrade is available for a given package

CLI Example:

salt '*' pkg.upgrade_available <package name>
salt.modules.win_pkg.version(*names, **kwargs)

Returns a version if the package is installed, else returns an empty string

CLI Example:

salt '*' pkg.version <package name>