# launcher_src/__main__.py """ Punto di ingresso principale per l'applicazione MyICR Launcher. Crea l'istanza di QApplication e mostra la finestra principale della UI. """ import sys import os import ctypes from PyQt6.QtWidgets import QApplication # Importiamo la nostra finestra UI from .update_ui import UpdateUI from .logger import get_logger # Disabilita i message box di errore di Windows per questo processo # Questo sopprime il popup "Failed to remove temporary directory" if hasattr(sys, 'frozen'): # SEM_FAILCRITICALERRORS = 0x0001 # SEM_NOGPFAULTERRORBOX = 0x0002 # SEM_NOOPENFILEERRORBOX = 0x8000 ctypes.windll.kernel32.SetErrorMode(0x8003) def main(): """Funzione principale.""" log = get_logger(__name__) log.info("Avvio MyICR Launcher") # Crea l'applicazione Qt app = QApplication(sys.argv) # Crea e mostra la finestra del launcher launcher_window = UpdateUI() launcher_window.show() # Avvia il loop degli eventi dell'applicazione code = app.exec() log.info(f"Terminazione MyICR Launcher con codice {code}") # Chiudi esplicitamente l'applicazione Qt per rilasciare tutte le risorse app.quit() del launcher_window del app # Usa os._exit invece di sys.exit per evitare il cleanup del bootloader PyInstaller # che può generare warning su directory temporanee os._exit(code) if __name__ == "__main__": # Aggiungiamo un blocco try-except per catturare errori imprevisti # all'avvio e registrarli o mostrarli in modo controllato. try: main() except Exception as e: # Logga su file oltre che su stderr try: get_logger(__name__).exception("Errore fatale non gestito all'avvio del launcher") except Exception: pass print(f"ERRORE FATALE non gestito: {e}", file=sys.stderr) sys.exit(1)