Я собрал свой проект через 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