Обнаружение Python интерпретаторов и установка пакета сайта из установщика WiX - PullRequest
1 голос
/ 13 февраля 2020

В настоящее время я расширяю существующий установщик на основе 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 может быть использовано для запуска команды установки, упомянутой выше.

...