Pyinstaller temporärer Dateien Fehler beim AktualisierenPython

Python-Programme
Anonymous
 Pyinstaller temporärer Dateien Fehler beim Aktualisieren

Post by Anonymous »

Mein Problem ähnelt dem in der verlinkten Frage beschriebenen. Inno Setup PyInstaller Auto-update < /p>
Ich möchte einen automatischen Update-Mechanismus für meine PYQT PyInstaller-Anwendung erstellen. Das Installationsprogramm installiert dann eine neue Version meines Programms, wonach es automatisch starten sollte. Anstatt zu starten, schlägt mein Programm jedoch mit dem Fehler "Python dll 'C: \ Benutzer \ Benutzer \ appdata \ local \ temp_mei278082 \ python3.10. geschlossen. Mit der neuen Version < /li>
Wenn MyProg beginnt, versucht es, auf '_MEI123' zuzugreifen, was nicht mehr vorhanden ist. Wenn Sie das Installationsprogramm manuell ausführen, wird mein Programm nach der Installation ohne Fehler automatisch ausgeführt.

Code: Select all

subprocess.Popen(['cmd.exe', '/c', fr'{installer_path} /silent && {exe_path}'], creationflags=0x00000008 | 0x00000200)
< /code>
Beide Optionen haben einen Fehler zurückgegeben.start /wait "C:\Users\user\myProg_setup.exe" /silent && "C:\Users\user\myProg.exe" 

Es gibt auch keine Fehler. Die einzige Lösung, die funktioniert hat, besteht darin, die Datei mit einem anderen Namen zu installieren. Diese Option ist jedoch nicht ideal für mich.

Code: Select all

import subprocess
import sys
from PyQt5.QtWidgets import QApplication, QPushButton

def update():                                               #path to same exe
subprocess.Popen(["cmd.exe", "/c", r"timeout /t 2 && C:\pytest\dist\main.exe"], creationflags=0x00000008 | 0x00000200, close_fds = True)
app.quit()

app = QApplication(sys.argv)
button = QPushButton('Click me!')
button.clicked.connect(update)
button.show()
sys.exit(app.exec_())
< /code>
Erstellen Sie es mit
pyinstaller .\main.py --onefile --noconsole

main.exe und drücken Sie die Taste
Die von mir erwähnten temporären Dateien sind der Python -Interpreter, der implizit erstellt wird. Gleiches Programm. < /p>
In der Tat kann die Popen -Funktion auch bei Flags keine vollständig isolierte Instanz aus dem übergeordneten Prozess erstellen. Die Instanz meines Programms, das in Popen ausgeführt wird, ist der Ansicht, dass die übergeordnete Instanz des Programms noch aktiv ist und versucht, auf den Dolmetscher des übergeordneten Programms zuzugreifen. Zu diesem Zeitpunkt wurde der Dolmetscher jedoch bereits geschlossen. Dies ist nur eine Hypothese von meiner Seite, und ich kann mich irren.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post