Программно установить приложение Python msi из скрипта Python

Как я могу программно установить Python msi, который находится в этом месте:

X:\install\python-3.3.2.msi

Я знаю, что могу использовать subprocess.call() или Popen() для этого, но я не знаю, как сделать так, чтобы другие параметры устанавливались автоматически. Например, сделать программу доступной для всех пользователей и т. д.

Что я пытаюсь сделать, так это запустить приложение msi из скрипта Python, чтобы каждый раз, когда я запускаю скрипт, он устанавливал python-3.3.2.msi на машину, для которой запускается скрипт.

Теперь новый вопрос: поддерживает ли установщик Python msi автоматическую установку. Я хочу, чтобы установка была, по сути, бесшумной, т.е. хотелось бы, чтобы установщик «знал» все параметры из вызова командной строки и вообще не требовалось никакого взаимодействия с пользователем. Пожалуйста, посмотрите комментарий Виктора Керкеза ниже и дайте мне знать, если бы вы поступили так же.

Можно ли указать все необходимые параметры через командную строку?


person Alain    schedule 07.08.2013    source источник
comment
Ваши пользователи могут просто дважды щелкнуть файл .msi или запустить его непосредственно из загрузки в Интернете. Что вы пытаетесь достичь?   -  person Robert Harvey    schedule 08.08.2013
comment
Я думаю, что он пытается запустить приложение msi из сценария Python, но это не работает, потому что msi не является исполняемым файлом, и он не знает, как его выполнить. Решение состоит в том, чтобы вызвать msiexec: msiexec /i c:\path\to\python-3.3.2.msi /quiet /qn /norestart /log c:\path\to\install.log Но я не уверен, что установщик Python msi поддерживает автоматическую установку...   -  person Viktor Kerkez    schedule 08.08.2013
comment
@ViktorKerkez: Я именно об этом и спрашиваю. Итак, позвольте мне обновить мой вопрос с вашей формулировкой. Спасибо!   -  person Alain    schedule 08.08.2013
comment
Я только что прочитал одну из страниц, предложенных Филмом ниже. Это выглядит примерно так: ProcessStartInfo(exeFile, arguments) Интересно, может ли Python воспринимать аргументы таким же образом.   -  person Alain    schedule 20.10.2016


Ответы (1)


Обычно каждый хорошо спроектированный MSI может быть установлен в автоматическом режиме. Данную стандартную командную строку следует опробовать, другие необязательные параметры могут быть TARGETDIR для каталога и т. д.

Параметры msiexec "/quiet" и "/qn" делают то же самое, не используйте их оба.

Основная проблема в вашем случае связана с правами администратора. Сценарий обычно не запускается с правами администратора, если вы не сделали специальных действий (таких как добавление/изменение ручных манифестов). Если вы просто используете параметр «/ qb» вместо «/ qn», обычно MSI должен использовать UAC. Попробуйте сначала, это самое простое (возможно, не самое лучшее) решение. Вам может быть достаточно не тихой, а автоматической установки. Или даже "/qb+", тогда вы тоже получите финальное поле.

Для запуска установки (или всего остального, требующего прав администратора) из скриптов необходимо:

1) Либо загрузочный вызов из .exe (например, написанный setup.exe", который уже получил права администратора при запуске

2) Чтобы вы запускали скрипт с правами администратора, щелкнув правой кнопкой мыши или вручную добавив запись оболочки для интеграции правой мыши / оболочки.

3) Измените манифест самого интерпретатора pyhton (или попробуйте флаг совместимости «Всегда требовать права администратора»).

Если вы скажете нам, в какую сторону идти, возможно, мы сможем дать более подробные подсказки. Просто прочитайте мой ответ на следующий вопрос SE, который имеет общие черты: >Установите msi с помощью msiexec и c#

person Philm    schedule 09.08.2013