В настоящее время я расширяю существующий установщик на основе WiX для предоставления Python API (назовем его PythonAPI
), который был недавно внедрен для некоторого программного обеспечения. Я добавил необходимые файлы в установщик, и они помещаются в соответствующую позицию (скажем, C:\Program Files\SomeSoftware\PythonAPI
). Я могу установить API через pip с помощью команды
python -m pip install "C:\Program Files\SomeSoftware\PythonAPI"
. Это позволяет мне выбрать версию python, для которой я хочу установить пакет, выбрав соответствующий интерпретатор python. Этот пакет, например, совместим только с python3 .6 и выше.
Мой вопрос: как найти установленные переводчики python с помощью WiX и использовать соответствующий для запуска команды установки выше?
Самый простой способ - предположить, что в PATH
есть соответствующий python интерпретатор, но я не хочу на это полагаться. Вместо этого я предполагаю, что было бы лучше проверить реестр на наличие ключей типа
HKLM\SOFTWARE\Python\PythonCore\versionnumber\InstallPath
HKCU\SOFTWARE\Python\PythonCore\versionnumber\InstallPath
, где versionnumber
- это что-то например 3.6
, чтобы получить путь установки и использовать этот абсолютный путь к интерпретатору. Однако, если я правильно понимаю функцию RegistrySearch в WiX, было бы трудно сканировать несколько версий (>=3.6
), поскольку мне нужно указать полный путь к ключу (в данном случае включая versionnumber
). Конечно, я мог бы выполнить жесткую проверку кода для доступных на данный момент версий (3.6
, 3.7
и 3.8
), но это означало бы, что мне придется вручную расширять этот код каждый раз, когда появляется новая версия python.
После выбора правильного интерпретатора я предполагаю, что CustomAction может быть использовано для запуска команды установки, упомянутой выше.