如何为 python 定义盐状态下的 win 包名称?

How to define name of win package in salt state for python?

我正在尝试为 Windows 创建 salt state,以安装 python3。这是我的 sls 文件:

{% set version = "3.8.3150.0" %}
{% set SOURCE_PATH = 'http://local-nas/' %}

{% if grains['cpuarch'] == 'AMD64' %}
    {% set PROGRAM_FILES = "%ProgramFiles(x86)%" %}
{% else %}
    {% set PROGRAM_FILES = "%ProgramFiles%" %}
{% endif %}

python3:
  '{{ version }}':
    full_name: 'Python 3.8.3 (64-bit)'
    installer: '{{ SOURCE_PATH }}/python-3.8.3-amd64.exe'
    install_flags: '/quiet InstallAllUsers=1'
    uninstaller: '{{ PROGRAM_FILES }}\Python 3.8\uninstall.exe'
    uninstall_flags: '/quiet InstallAllUsers=1'
    msiexec: False

问题是,当我 运行 state.apply 使用 salt 时,我的状态为失败,但 python 安装。 我知道,那个版本和 full_name 应该与 Add/Remove 程序中的名称和版本完全匹配。还有“Python 3.8.3(64 位)”和“Python Launcher”。这有点奇怪。但是当我用 pkg.list_pkgs 检查我的节点时,我发现有几个来自 Python 的打包器,它们都有不同的名称:

    Python 3.8.3 Core Interpreter (64-bit):
        3.8.3150.0
    Python 3.8.3 Development Libraries (64-bit):
        3.8.3150.0
    Python 3.8.3 Documentation (64-bit):
        3.8.3150.0
    Python 3.8.3 Executables (64-bit):
        3.8.3150.0
    Python 3.8.3 Standard Library (64-bit):
        3.8.3150.0
    Python 3.8.3 Tcl/Tk Support (64-bit):
        3.8.3150.0
    Python 3.8.3 Test Suite (64-bit):
        3.8.3150.0
    Python 3.8.3 Utility Scripts (64-bit):
        3.8.3150.0
    Python 3.8.3 pip Bootstrap (64-bit):
        3.8.3150.0
    Python Launcher:
        3.8.7072.0

问题是 - 我应该在盐状态“full_name”字段中设置什么名称以避免失败状态?

P.S。我尝试设置“Python 3.8.3 核心解释器(64 位)”- 没有帮助。

全名应该是 pkg.list_pkgs 中显示的全名,即 add/remove 包中显示的全名。还要确保记得在单词后同步数据库,否则 minion 不会接收更改。在这种情况下,全名应该是 Python 3.8.3 Core Interpreter (64-bit)