feat(splash): splash natif PyInstaller — couvre la décompression onefile
L'exe --onefile décompresse ~720 Mo dans %TEMP% au lancement. Sur Windows, cela prend 15-30 s AVANT que Python ne démarre. Pendant ce temps : - Aucune fenêtre visible (même le splash tkinter existant n'était pas encore exécuté, car il faut d'abord l'import de Python). - L'utilisateur clique parfois plusieurs fois, croit que l'app est plantée. Solution : Splash natif PyInstaller (Splash() dans le .spec). L'image est affichée PAR LE BOOTLOADER de l'exe, AVANT même le démarrage Python. Le texte sous l'image est actualisable via pyi_splash.update_text(), puis fermé via pyi_splash.close() une fois le splash tkinter visible. Changements : - assets/splash.png (480x240) : titre + sous-titre + indication de durée - anonymisation_onefile.spec : Splash() + splash/splash.binaries dans EXE() - launcher.py : import pyi_splash (fallback silencieux en mode dev), helpers _splash_update / _splash_close, fermeture du splash natif dès que le splash tkinter est à l'écran (évite superposition). - .gitignore : exception !assets/** pour versionner l'image du splash (règle générale *.png exclut tout le reste). Effet utilisateur attendu : fenêtre visible IMMÉDIATEMENT au double-clic, avec message "Démarrage en cours — merci de patienter…". Suppression du trou noir de 15-30 s. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -45,8 +45,27 @@ a = Analysis(
|
||||
noarchive=False,
|
||||
)
|
||||
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
||||
|
||||
# Splash natif PyInstaller : image affichée AU LANCEMENT DE L'EXE,
|
||||
# avant même que Python démarre. Couvre les ~15-30 s de décompression
|
||||
# du bundle --onefile dans %TEMP% qui laissaient l'écran vide auparavant.
|
||||
# Le launcher ferme le splash via pyi_splash.close() une fois la GUI prête.
|
||||
splash = Splash(
|
||||
os.path.join(app_dir, 'assets', 'splash.png'),
|
||||
binaries=a.binaries,
|
||||
datas=a.datas,
|
||||
text_pos=(10, 215),
|
||||
text_size=10,
|
||||
text_color='white',
|
||||
minify_script=True,
|
||||
always_on_top=False,
|
||||
)
|
||||
|
||||
exe = EXE(
|
||||
pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [],
|
||||
pyz, a.scripts,
|
||||
splash, # image affichée immédiatement
|
||||
splash.binaries, # bootloader splash
|
||||
a.binaries, a.zipfiles, a.datas, [],
|
||||
name='Anonymisation',
|
||||
debug=False,
|
||||
strip=False,
|
||||
|
||||
Reference in New Issue
Block a user