Ошибка временных файлов PyInstaller при обновлении ⇐ Python

Программы на Python
Anonymous
Ошибка временных файлов PyInstaller при обновлении

Сообщение Anonymous »

Моя проблема аналогична описанной в связанном вопросе. Автоматическое обновление Inno Setup PyInstaller
Я хочу создать механизм автоматического обновления для моего приложения PyQt PyInstaller.
Моя программа загружает установщик (Inno Setup) с сервера, запускает его , а затем сразу закрывается. Затем установщик устанавливает новую версию моей программы, после чего она должна запуститься автоматически. Однако вместо запуска моя программа выдает ошибку «Не удалось загрузить Python DLL 'C:\Users\user\AppData\Local\Temp_MEI278082\python3.10.dll.'».
По какой-то причине Pyinstaller exe пытается получить доступ к временным файлам, которые были удалены после закрытия первой версии моего приложения.
Приведу пример:
  • myProg.exe запускается и создает временную папку «_MEI123»
  • myProg закрывается, а папка «_MEI123» удаляется
  • установщик заменяет myProg новой версией
  • При запуске myProg он пытается получить доступ к '_MEI123', которого больше не существует
Важно отметить, что если вы запускаете приложение вручную, ошибок при запуске не возникает. Если вы запустите установщик вручную, моя программа также запустится автоматически после установки без ошибок.
Я пробовал запустить приложение после установки, используя команды Inno (запуск после установки) и CMD:
р>

Код: Выделить всё

subprocess.Popen(['cmd.exe', '/c', fr'{installer_path} /silent && {exe_path}'], creationflags=0x00000008 | 0x00000200)
Обе эти опции вернули ошибку.
Если вы вручную вызываете команду через консоль:

Код: Выделить всё

start /wait "C:\Users\user\myProg_setup.exe" /silent && "C:\Users\user\myProg.exe" 
ошибок тоже нет.
То есть почему-то причина этой ошибки в том, что установщик моего приложения был началось с моего собственного приложения. Пока что единственное решение, которое сработало, — это установить файл с другим именем. Однако этот вариант для меня не идеален.

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-updating

Вернуться в «Python»