@evgcrvsed

Почему собранный проект pyinstaller при вызове .bat не может выполнить команду start?

Я собрал свой проект через pyinstaller --onefile --clean main.py и получил main.exe
Он проверяет обновление на сервере, и, если оно есть, то скачивает main_new.exe с сервера, а так же создаёт и запускает .bat который удаляет main.exe и переименовывает main_new.exe в main.exe, а так же он должен запускать main.exe. То есть такой автоперезапуск программы. Но собранный билд при открытии .bat только удаляет и переименовывает, но почему то не запускает программу.
Вот код
def get_script_path():
    script_path = os.path.abspath(sys.argv[0])
    script_directory = os.path.dirname(script_path)
    return script_directory

    with open('autoupdater.bat', 'w', encoding='utf-8') as file:
        file.write(rf"""
timeout /t 2 /nobreak
del "{get_script_path()}\main.exe" || echo Ошибка удаления main.exe >> error.log
rename "{get_script_path()}\main_new.exe" "main.exe" || echo Ошибка переименования main_new.exe >> error.log
start /d "{get_script_path()}\main.exe" {get_script_path()}\main.exe
""")
    process = subprocess.Popen(
        ['autoupdater.bat'],
        creationflags=subprocess.CREATE_NEW_CONSOLE
    )
    sys.exit()

При этом если заменить Popen на run, то всё работает, но мне такое не подходит, ведь тогда невозможно заменить main.exe
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы