#python #python-3.x #urllib
#python #python-3.x #urllib
Вопрос:
Я хочу создать программу автоматического обновления для своего проекта, которая загружает и устанавливает файл из Интернета. Я сделал, как я могу загрузить файл в нужное мне место с нужным именем. Место, где я застрял, — это то, как я могу установить файл.
Код, который я написал до сих пор:
from urllib.request import urlretrieve
import getpass
url = 'https://sourceforge.net/projects/artigence/files/latest/download'
print('File Downloading')
usrname = getpass.getuser()
destination = f'C:\Users\{usrname}\Downloads\download.exe'
download = urlretrieve(url, destination)
print('File downloaded')
И файл будет загружен в папку «Мои загрузки». Теперь, как я могу установить EXE-файл с помощью python?
Комментарии:
1. Вы можете использовать
pyautogui
для управления приложением. Взгляните на это
Ответ №1:
Вам нужно будет использовать subprocess
модуль для выполнения .exe
файлов.
import subprocess
cmd = "{download location} batch.exe"
returned_value = subprocess.call(cmd, shell=True) # returns the exit code in unix
print('returned value:', returned_value)
Я настоятельно рекомендую не использовать pyautogui
для этого.
Комментарии:
1. «установка .exe»… как установить приложение с помощью
os
?2.
.exe
по сути, это отдельная команда, поэтому достаточно вызвать ее с помощью сценария оболочки или файла bat, или, в этом случае, выполнить команду в одну строку для вызова файла3. Если это an
installer.exe
, то не потребуется ли нам выбирать параметры при установке likeinstall location
и многочисленныеnext
кнопки? Как это сделать сos
помощью?4. Вы можете проверить установщик в Интернете и надеяться найти некоторые аргументы, которые позволят вам пропустить его, но если это мастер установки, у вас не будет другого выбора
pyautogui
. Однако это может привести к путаницеpyautogui
, поскольку оно зависит от координат экрана (x, y), поэтому вы можете столкнуться с множеством проблем с нежелательной совместимостью.5. Да, именно по этой причине я рекомендовал
pyautogui
, чтобы он работал во всех случаях :-). Грязный, да, но все же надежный 🙂