metadidomi-builder 1.4.201125 → 1.6.2812251812

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +1032 -572
  2. package/build_tools/backup-manager.js +3 -0
  3. package/build_tools/build_apk.js +3 -0
  4. package/build_tools/builder.js +2 -2
  5. package/build_tools/certs/cert-1a25871e.key +1 -0
  6. package/build_tools/certs/cert-1a25871e.pfx +0 -0
  7. package/build_tools/check-apk.js +211 -0
  8. package/build_tools/create-example-app.js +73 -0
  9. package/build_tools/decrypt_pfx_password.js +1 -26
  10. package/build_tools/diagnose-apk.js +61 -0
  11. package/build_tools/generate-icons.js +3 -0
  12. package/build_tools/generate-resources.js +3 -0
  13. package/build_tools/manage-dependencies.js +3 -0
  14. package/build_tools/process-dependencies.js +203 -0
  15. package/build_tools/resolve-transitive-deps.js +3 -0
  16. package/build_tools/restore-resources.js +3 -0
  17. package/build_tools/setup-androidx.js +131 -0
  18. package/build_tools/templates/bootstrap.template.js +27 -0
  19. package/build_tools/verify-apk-dependencies.js +261 -0
  20. package/build_tools_py/build_nsis_installer.py +1054 -19
  21. package/build_tools_py/builder.py +3 -3
  22. package/build_tools_py/compile_launcher_with_entry.py +19 -271
  23. package/build_tools_py/launcher_integration.py +19 -189
  24. package/build_tools_py/pyMetadidomi/README.md +98 -0
  25. package/build_tools_py/pyMetadidomi/__pycache__/pyMetadidomi.cpython-311.pyc +0 -0
  26. package/build_tools_py/pyMetadidomi/pyMetadidomi.py +16 -1675
  27. package/create-app.bat +31 -0
  28. package/create-app.ps1 +27 -0
  29. package/package.json +8 -2
  30. package/build_tools/certs/cert-65198130.key +0 -1
  31. package/build_tools/certs/cert-65198130.pfx +0 -0
  32. package/build_tools/certs/cert-f1fad9b5.key +0 -1
  33. package/build_tools/certs/cert-f1fad9b5.pfx +0 -0
  34. package/build_tools_py/pyMetadidomi/pyMetadidomi-obf.py +0 -19
@@ -1,19 +1,1054 @@
1
- # --- Loader natif par pyMetadidomi (pymloader) ---
2
- import base64, zlib, marshal
3
- from Crypto.Cipher import AES
4
- try:
5
- import pymloader
6
- payload = base64.b64decode("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")
7
- key = base64.b64decode("L72MSxRg+U2mU1/7RmxxcxHNFBTAXccDqi7tAOq3lKI=")
8
- iv = base64.b64decode("dyAqLsnM+HMd2CN9/4v6qg==")
9
- def unpad(data):
10
- return data[:-data[-1]]
11
- cipher = AES.new(key, AES.MODE_CBC, iv)
12
- decrypted = unpad(cipher.decrypt(payload))
13
- bytecode = zlib.decompress(decrypted)
14
- pymloader.exec_bytecode(bytecode)
15
- except ImportError:
16
- bytecode = zlib.decompress(decrypted)
17
- code = marshal.loads(bytecode)
18
- exec(code)
19
- # --- Fin du loader natif ---
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ build_nsis_installer.py - Générateur d'installateur NSIS pour applications Python
5
+
6
+ Crée un installateur Windows NSIS à partir d'un bundle Python chiffré.
7
+
8
+ Usage:
9
+ python build_nsis_installer.py \
10
+ --bundle dist/app_bundle.py \
11
+ --output dist/MonApp-Setup-1.0.0.exe \
12
+ --app-name "MonApp" \
13
+ --version 1.0.0 \
14
+ --company "Mon Entreprise" \
15
+ --description "Ma super application" \
16
+ --copyright 2024 Mon Entreprise" \
17
+ --icon assets/icon.ico
18
+ """
19
+
20
+ import argparse
21
+ import os
22
+ import shutil
23
+ import subprocess
24
+ import sys
25
+ import io
26
+ import tempfile
27
+ from pathlib import Path
28
+ from pyMetadidomi.pyMetadidomi import obfuscate_app
29
+ from launcher_integration import get_launcher_exe
30
+ import ast
31
+ import json
32
+ import re
33
+ import traceback
34
+ from collections import defaultdict
35
+
36
+ # CONFIGURATION
37
+ # Dossier de sortie: \metadidomi-builder\build_tools\vendor
38
+ OUTPUT_DIR = Path(__file__).parent.parent / "build_tools" / "vendor"
39
+
40
+ # Modules stdlib essentiels - COMPLET pour éviter les manques
41
+ STDLIB_DIRECTORIES = [
42
+ 'encodings', 'asyncio', 'collections', 'concurrent', 'contextlib',
43
+ 'ctypes', 'dataclasses', 'distutils', 'email', 'html', 'http',
44
+ 'importlib', 'json', 'logging', 'multiprocessing', 'sqlite3',
45
+ 'ssl', 'tkinter', 'unittest', 'urllib', 'xml', 'xmlrpc', 'zipfile',
46
+ 'urllib3', 'requests', 'pip', 'setuptools', 'wheel', 're', 'pathlib',
47
+ 'typing', 'inspect', 'copy', 'pydoc', 'getopt', 'stat', 'fcntl',
48
+ 'select', 'termios', 'tty', 'pty', 'pwd', 'grp', 'crypt', 'pprint',
49
+ 'textwrap', 'string', 'stringprep', 'readline', 'rlcompleter', 'code',
50
+ 'codeop', 'traceback', 'warnings', 'linecache', 'calendar', 'time',
51
+ 'locale', 'gettext', 'platform', 'errno', 'ctypes', 'struct', 'codecs',
52
+ 'random', 'statistics', 'functools', 'itertools', 'operator', 'webbrowser',
53
+ 'base64', 'binascii', 'mmap', 'ast', 'symtable', 'token', 'keyword',
54
+ 'tokenize', 'tabnanny', 'pydoc_data', 'encodings', 'site'
55
+ ]
56
+
57
+ # Fichiers ignore
58
+ SKIP_DIRS = {'__pycache__', '.git', '.venv', 'venv', '.egg-info', 'dist', 'build',
59
+ '.pytest_cache', '.mypy_cache', 'node_modules', '.tox', '.eggs'}
60
+ SKIP_FILES = {'.pyc', '.pyo', '.so', '.pyd'}
61
+
62
+ # Extensions d'assets à copier (images, configs, etc.)
63
+ ASSET_EXTENSIONS = {'.json', '.yaml', '.yml', '.txt', '.csv', '.xml', '.db', '.sqlite',
64
+ '.png', '.jpg', '.jpeg', '.gif', '.ico', '.bmp', '.svg',
65
+ '.html', '.css', '.js', '.md', '.rst', '.ini', '.conf', '.cfg'}
66
+
67
+ def get_python_version():
68
+ """Retourne la version de Python (3.8, 3.9, 3.10, 3.11, etc.)"""
69
+ major = sys.version_info.major
70
+ minor = sys.version_info.minor
71
+ return f"{major}{minor}"
72
+
73
+ def get_python_dll_name():
74
+ """Retourne le nom du DLL Python selon la version"""
75
+ version = get_python_version()
76
+ return f"python{version}.dll"
77
+
78
+ def detect_dlls_in_packages(site_packages_src):
79
+ """Détecte tous les .dll et .so dans les packages"""
80
+ dlls = {}
81
+ try:
82
+ for pkg_dir in site_packages_src.glob('*/'):
83
+ if pkg_dir.is_dir():
84
+ pkg_name = pkg_dir.name
85
+ pkg_dlls = list(pkg_dir.glob('*.dll')) + list(pkg_dir.glob('*.so')) + \
86
+ list(pkg_dir.glob('**/*.dll')) + list(pkg_dir.glob('**/*.so'))
87
+ if pkg_dlls:
88
+ dlls[pkg_name] = pkg_dlls
89
+ except Exception as e:
90
+ pass
91
+ return dlls
92
+
93
+ def copy_assets(src_dir, dst_dir, force=False):
94
+ """Copie les assets (images, configs, etc.) d'un répertoire"""
95
+ copied = 0
96
+ for ext in ASSET_EXTENSIONS:
97
+ for asset_file in src_dir.rglob(f'*{ext}'):
98
+ if asset_file.is_file() and all(skip not in asset_file.parts for skip in SKIP_DIRS):
99
+ rel_path = asset_file.relative_to(src_dir)
100
+ dst_file = dst_dir / rel_path
101
+ result = smart_copy_file(asset_file, dst_file, force=force)
102
+ if result is True:
103
+ copied += 1
104
+ return copied
105
+
106
+ def smart_copy_file(src, dst, force=False):
107
+ """Copie un fichier intelligemment - ignore si existant et identique"""
108
+ try:
109
+ if dst.exists() and not force:
110
+ # Vérifier si les fichiers sont identiques (taille + mtime)
111
+ if src.stat().st_size == dst.stat().st_size and \
112
+ src.stat().st_mtime == dst.stat().st_mtime:
113
+ return False # Fichier déjà à jour
114
+
115
+ dst.parent.mkdir(parents=True, exist_ok=True)
116
+ shutil.copy2(src, dst)
117
+ return True # Fichier copié
118
+ except Exception:
119
+ return None # Erreur
120
+
121
+ def safe_print(msg):
122
+ """Affiche un message de manière safe (sans crash d'encoding)"""
123
+ try:
124
+ print(msg)
125
+ except UnicodeEncodeError:
126
+ # Remplacer les caractères problématiques
127
+ safe_msg = msg.encode('ascii', 'ignore').decode('ascii')
128
+ print(safe_msg)
129
+
130
+ # Localiser Python Système complet
131
+ PYTHON_EXECUTABLE = Path(sys.executable)
132
+ if PYTHON_EXECUTABLE.name == "python.exe":
133
+ PYTHON_SYSTEM_ROOT = PYTHON_EXECUTABLE.parent
134
+ else:
135
+ PYTHON_SYSTEM_ROOT = PYTHON_EXECUTABLE.parent.parent
136
+
137
+ # Ne pas afficher le Python système ici - on affichera le choix final après avoir parsé les arguments
138
+
139
+ if not (PYTHON_SYSTEM_ROOT / "Lib").exists():
140
+ safe_print(f"[ERROR] Lib non trouve dans {PYTHON_SYSTEM_ROOT}")
141
+ sys.exit(1)
142
+
143
+ def read_requirements_txt(project_path):
144
+ """Lit les dépendances depuis requirements.txt"""
145
+ requirements = set()
146
+ req_file = Path(project_path) / "requirements.txt"
147
+
148
+ if req_file.exists():
149
+ try:
150
+ with open(req_file, 'r', encoding='utf-8', errors='ignore') as f:
151
+ for line in f:
152
+ line = line.strip()
153
+ if line and not line.startswith('#'):
154
+ pkg_name = re.split(r'[=><!\[\];\s]', line)[0].strip()
155
+ if pkg_name:
156
+ requirements.add(pkg_name)
157
+ except Exception as e:
158
+ safe_print(f"[WARN] Erreur lecture requirements.txt: {e}")
159
+
160
+ return requirements
161
+
162
+ def read_pyproject_toml(project_path):
163
+ """Lit les dépendances depuis pyproject.toml"""
164
+ requirements = set()
165
+ pyproject_file = Path(project_path) / "pyproject.toml"
166
+
167
+ if pyproject_file.exists():
168
+ try:
169
+ with open(pyproject_file, 'r', encoding='utf-8', errors='ignore') as f:
170
+ content = f.read()
171
+ match = re.search(r'dependencies\s*=\s*\[(.*?)\]', content, re.DOTALL)
172
+ if match:
173
+ deps_str = match.group(1)
174
+ for dep in re.findall(r'"([^"]+)"', deps_str):
175
+ pkg_name = re.split(r'[=><!\[\];\s]', dep)[0].strip()
176
+ if pkg_name:
177
+ requirements.add(pkg_name)
178
+ except Exception as e:
179
+ safe_print(f"[WARN] Erreur lecture pyproject.toml: {e}")
180
+
181
+ return requirements
182
+
183
+ def list_imports(project_path):
184
+ """Détecte les imports utilisés dans le projet - VERSION OPTIMISÉE"""
185
+ imports = set()
186
+ errors = []
187
+
188
+ # Limiter la scan à certains dossiers SEULEMENT pour optimiser
189
+ scan_dirs = []
190
+ project_path = Path(project_path)
191
+
192
+ # Ajouter les dossiers source importants seulement
193
+ important_dirs = ['app', 'src', 'lib', 'core', 'modules', 'services', 'routes', 'handlers']
194
+ for dir_name in important_dirs:
195
+ dir_path = project_path / dir_name
196
+ if dir_path.exists() and dir_path.is_dir():
197
+ scan_dirs.append(dir_path)
198
+
199
+ # Ajouter les fichiers .py à la racine
200
+ root_py_files = list(project_path.glob('*.py'))
201
+
202
+ # EXCLURE ABSOLUMENT les gros dossiers
203
+ exclude_dirs = {'python-embed-amd64', 'node_modules', '__pycache__', '.git', 'dist', 'build',
204
+ 'venv', 'env', '.venv', '.env', 'mysql', '.tox', '.eggs', '.pytest_cache',
205
+ '.mypy_cache', 'site-packages', 'backups', 'databases'}
206
+
207
+ try:
208
+ # Scanner les fichiers à la racine
209
+ for filepath in root_py_files:
210
+ try:
211
+ with open(filepath, "r", encoding="utf-8", errors='ignore') as f:
212
+ content = f.read()
213
+
214
+ try:
215
+ node = ast.parse(content)
216
+ for n in ast.walk(node):
217
+ if isinstance(n, ast.Import):
218
+ for name in n.names:
219
+ imports.add(name.name.split('.')[0])
220
+ elif isinstance(n, ast.ImportFrom):
221
+ if n.module:
222
+ imports.add(n.module.split('.')[0])
223
+ except SyntaxError:
224
+ pass
225
+ except Exception as e:
226
+ pass
227
+
228
+ # Scanner les dossiers source importants
229
+ for scan_dir in scan_dirs:
230
+ for root, dirs, files in os.walk(scan_dir):
231
+ # Exclure les sous-dossiers problématiques
232
+ dirs[:] = [d for d in dirs if d not in exclude_dirs and not d.startswith('.')]
233
+
234
+ for file in files:
235
+ if file.endswith(".py"):
236
+ filepath = os.path.join(root, file)
237
+ try:
238
+ with open(filepath, "r", encoding="utf-8", errors='ignore') as f:
239
+ content = f.read()
240
+
241
+ try:
242
+ node = ast.parse(content)
243
+ for n in ast.walk(node):
244
+ if isinstance(n, ast.Import):
245
+ for name in n.names:
246
+ imports.add(name.name.split('.')[0])
247
+ elif isinstance(n, ast.ImportFrom):
248
+ if n.module:
249
+ imports.add(n.module.split('.')[0])
250
+ except SyntaxError:
251
+ pass
252
+ except Exception as e:
253
+ pass
254
+ except Exception as e:
255
+ pass
256
+
257
+ return imports
258
+
259
+ def copy_python_runtime(output_path, python_embed_path=None):
260
+ """Copie les fichiers essentiels de Python (exécutables + stdlib complet)"""
261
+
262
+ # Déterminer la source Python
263
+ if python_embed_path:
264
+ # Utiliser le Python embarqué personnalisé fourni
265
+ python_src = Path(python_embed_path).resolve()
266
+ if not python_src.exists():
267
+ safe_print(f"[ERROR] Python embarqué personnalisé introuvable: {python_src}")
268
+ sys.exit(1)
269
+ safe_print(f"[INFO] 🐍 Utilisation du Python EMBARQUÉ personnalisé")
270
+ safe_print(f"[INFO] Chemin: {python_src}")
271
+ else:
272
+ # Utiliser le Python système
273
+ python_src = PYTHON_SYSTEM_ROOT
274
+ safe_print(f"[INFO] 🐍 Utilisation du Python SYSTÈME")
275
+ safe_print(f"[INFO] Chemin: {python_src}")
276
+ safe_print(f"[INFO] Version: {sys.version.split()[0]}")
277
+
278
+ python_dst = Path(output_path) / "python_embeddable"
279
+
280
+ if python_dst.exists():
281
+ shutil.rmtree(python_dst)
282
+
283
+ python_dst.mkdir(parents=True, exist_ok=True)
284
+
285
+ safe_print("[1/4] Copie de Python runtime...")
286
+ safe_print(f" Detecte: Python {get_python_version()[0]}.{get_python_version()[1]}")
287
+
288
+ # 1. Executables - Support multi-version Python
289
+ python_dll = get_python_dll_name()
290
+ executables = ['python.exe', 'pythonw.exe', python_dll, 'vcruntime140.dll', 'vcruntime140_1.dll']
291
+
292
+ for fname in executables:
293
+ src = python_src / fname
294
+ if src.exists():
295
+ try:
296
+ shutil.copy2(src, python_dst / fname)
297
+ safe_print(f" [OK] {fname}")
298
+ except Exception as e:
299
+ safe_print(f" [WARN] {fname}: {e}")
300
+
301
+ # 2. DLLs - Avancé: détecter tous les DLLs
302
+ dlls_src = python_src / "DLLs"
303
+ if dlls_src.exists():
304
+ try:
305
+ shutil.copytree(dlls_src, python_dst / "DLLs", dirs_exist_ok=True)
306
+ dll_count = len(list((python_dst / "DLLs").glob("*.dll")))
307
+ safe_print(f" [OK] DLLs/ ({dll_count} fichiers)")
308
+ except Exception as e:
309
+ safe_print(f" [WARN] DLLs: {e}")
310
+
311
+ # 3. Tkinter support
312
+ tcl_src = python_src / "tcl"
313
+ if tcl_src.exists():
314
+ try:
315
+ shutil.copytree(tcl_src, python_dst / "tcl", dirs_exist_ok=True)
316
+ safe_print(f" [OK] tcl/")
317
+ except Exception as e:
318
+ safe_print(f" [WARN] tcl: {e}")
319
+
320
+ # 4. Stdlib COMPLET
321
+ lib_dst = python_dst / "Lib"
322
+ lib_dst.mkdir(exist_ok=True)
323
+
324
+ lib_src = python_src / "Lib"
325
+
326
+ # Copier TOUS les répertoires stdlib essentiels
327
+ for dir_name in STDLIB_DIRECTORIES:
328
+ src_dir = lib_src / dir_name
329
+ if src_dir.exists():
330
+ try:
331
+ shutil.copytree(src_dir, lib_dst / dir_name, dirs_exist_ok=True)
332
+ except Exception:
333
+ pass
334
+
335
+ # Copier TOUS les fichiers .py de la racine Lib
336
+ py_count = 0
337
+ for py_file in lib_src.glob("*.py"):
338
+ try:
339
+ shutil.copy2(py_file, lib_dst / py_file.name)
340
+ py_count += 1
341
+ except Exception:
342
+ pass
343
+
344
+ safe_print(f" [OK] {py_count} modules stdlib")
345
+
346
+ try:
347
+ size_mb = sum(os.path.getsize(f) for f in python_dst.rglob('*') if f.is_file()) / (1024*1024)
348
+ safe_print(f"\n[OK] Python: {size_mb:.1f} MB\n")
349
+ except Exception as e:
350
+ safe_print(f"\n[OK] Python runtime copie\n")
351
+
352
+ def copy_packages(packages, output_path):
353
+ """Copie les packages pip détectés"""
354
+ site_packages_src = PYTHON_SYSTEM_ROOT / "Lib" / "site-packages"
355
+ site_packages_dst = Path(output_path) / "python_embeddable" / "Lib" / "site-packages"
356
+
357
+ if not site_packages_src.exists():
358
+ print(f"[INFO] Aucun site-packages\n")
359
+ return
360
+
361
+ site_packages_dst.mkdir(parents=True, exist_ok=True)
362
+
363
+ print("[2/3] Copie des packages pip...\n")
364
+
365
+ copied = 0
366
+ dlls_found = 0
367
+ so_found = 0
368
+
369
+ # Détecter les DLLs et .so dans les packages
370
+ dlls_map = detect_dlls_in_packages(site_packages_src)
371
+ if dlls_map:
372
+ print("[INFO] DLLs/SO détectés dans les packages:")
373
+ for pkg_name, dll_list in dlls_map.items():
374
+ print(f" - {pkg_name}: {len(dll_list)} fichier(s)")
375
+ for dll in dll_list:
376
+ if dll.suffix == '.dll':
377
+ dlls_found += 1
378
+ elif dll.suffix == '.so':
379
+ so_found += 1
380
+ print()
381
+
382
+ for pkg in sorted(packages):
383
+ pkg_src = site_packages_src / pkg
384
+
385
+ if pkg_src.is_dir():
386
+ try:
387
+ pkg_dst = site_packages_dst / pkg
388
+ if pkg_dst.exists():
389
+ shutil.rmtree(pkg_dst)
390
+ shutil.copytree(pkg_src, pkg_dst)
391
+ size = sum(f.stat().st_size for f in pkg_dst.rglob('*') if f.is_file()) / (1024*1024)
392
+ print(f"[OK] {pkg:30s} ({size:.1f} MB)")
393
+ copied += 1
394
+ except Exception as e:
395
+ print(f"[WARN] {pkg}: {e}")
396
+
397
+ print(f"\n[INFO] {copied} package(s) copiés")
398
+ if dlls_found > 0 or so_found > 0:
399
+ print(f"[INFO] {dlls_found} DLL(s) et {so_found} .so inclus\n")
400
+ else:
401
+ print()
402
+
403
+ def initialize_build_environment(project_dir):
404
+ """
405
+ ÉTAPE 0 (PREMIÈRE ÉTAPE) : Initialisation de l'environnement de build
406
+ Détecte les dépendances, configure Python, etc.
407
+ """
408
+ print(f"[build_nsis_installer] ⚙️ ÉTAPE 0 : Initialisation de l'environnement")
409
+ print(f"[build_nsis_installer] 📦 Détection des dépendances du projet...")
410
+
411
+ imports = list_imports(project_dir)
412
+ requirements_txt = read_requirements_txt(project_dir)
413
+ pyproject_deps = read_pyproject_toml(project_dir)
414
+
415
+ all_packages = imports | requirements_txt | pyproject_deps
416
+
417
+ print(f"[build_nsis_installer] ✓ {len(imports)} imports détectés")
418
+ print(f"[build_nsis_installer] ✓ {len(requirements_txt)} dépendances depuis requirements.txt")
419
+ print(f"[build_nsis_installer] ✓ {len(pyproject_deps)} dépendances depuis pyproject.toml")
420
+ print(f"[build_nsis_installer] ✓ Total: {len(all_packages)} package(s) à inclure")
421
+ print()
422
+
423
+ return all_packages
424
+
425
+ def compile_launcher_c(output_path: Path, gui_mode: bool = False, app_src: Path = None, entry_file: str = None) -> bool:
426
+ """
427
+ Compile launcher_source.c en launcher.exe using MinGW gcc
428
+ Utilise le nouveau système d'intégration de launcher
429
+
430
+ Args:
431
+ output_path: Chemin de sortie pour launcher.exe
432
+ gui_mode: Si True, compile en mode GUI (pas de console)
433
+ app_src: Chemin vers le dossier source de l'app
434
+ entry_file: Nom du fichier d'entrée (ex: app_launcher.py)
435
+
436
+ Returns:
437
+ True si compilation réussie, False sinon
438
+ """
439
+ try:
440
+ script_dir = Path(__file__).parent
441
+ compile_script = script_dir / "compile_launcher_with_entry.py"
442
+
443
+ if not compile_script.exists():
444
+ print(f"[launcher] ⚠️ Script de compilation non trouvé: {compile_script}")
445
+ return False
446
+
447
+ # Construire la commande avec les bons arguments
448
+ cmd = [sys.executable, str(compile_script)]
449
+
450
+ # Ajouter le chemin de la source de l'app
451
+ if app_src:
452
+ cmd.extend(["--app-src", str(app_src)])
453
+
454
+ # Ajouter le nom du fichier d'entrée
455
+ if entry_file:
456
+ cmd.extend(["--entry", entry_file])
457
+
458
+ # Ajouter le flag GUI si demandé
459
+ if gui_mode:
460
+ cmd.append("--gui")
461
+
462
+ result = subprocess.run(
463
+ cmd,
464
+ capture_output=True,
465
+ text=True,
466
+ encoding='utf-8',
467
+ errors='replace',
468
+ timeout=120
469
+ )
470
+
471
+ print(result.stdout)
472
+ if result.stderr:
473
+ print(result.stderr)
474
+
475
+ # Vérifier si le fichier a été créé
476
+ default_launcher = script_dir / "launcher.exe"
477
+ if default_launcher.exists():
478
+ # Déplacer vers la destination si différente
479
+ if output_path != default_launcher:
480
+ shutil.move(str(default_launcher), str(output_path))
481
+ print(f"[launcher] ✓ Launcher compilé avec succès ({output_path.stat().st_size / 1024:.1f} KB)")
482
+ return True
483
+ elif output_path.exists():
484
+ print(f"[launcher] ✓ Launcher compilé avec succès ({output_path.stat().st_size / 1024:.1f} KB)")
485
+ return True
486
+ else:
487
+ print(f"[launcher] ⚠️ Compilation échouée - aucun fichier généré")
488
+ return False
489
+
490
+ except Exception as e:
491
+ print(f"[launcher] ⚠️ Erreur: {e}")
492
+ return False
493
+
494
+ def build_nsis_installer(app_src, output_exe, app_name, version,
495
+ company="Metadidomi", description="", copyright="",
496
+ icon_path=None, gui_mode=False, python_embed_path=None):
497
+ """
498
+ Crée un installateur NSIS pour l'application Python
499
+ Copie TOUS les fichiers de l'app dans le payload (pas de chiffrement, pas de protection)
500
+
501
+ Args:
502
+ gui_mode: Si True, lance l'app en mode GUI (pas de console)
503
+ python_embed_path: Chemin vers un Python embarqué personnalisé (ex: python-embed-amd64)
504
+ """
505
+ # Forcer l'encodage UTF-8 pour la sortie (Windows PowerShell utilise CP1252 par défaut)
506
+ import io
507
+ import sys
508
+ if sys.stdout.encoding != 'utf-8':
509
+ sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
510
+ sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
511
+
512
+ app_src = Path(app_src).resolve()
513
+ output_exe = Path(output_exe).resolve()
514
+
515
+ if not app_src.exists():
516
+ raise FileNotFoundError(f"Dossier app non trouvé: {app_src}")
517
+
518
+ # Lire le point d'entrée DÉFINI dans config.py
519
+ entry_file_name = "__main__.py" # Par défaut
520
+ config_path = app_src / "config.py"
521
+ if config_path.exists():
522
+ try:
523
+ config_ns = {}
524
+ with open(config_path, 'r', encoding='utf-8') as f:
525
+ exec(f.read(), config_ns)
526
+ entry = config_ns.get('ENTRY', '__main__')
527
+ # Chercher le fichier d'entrée exact
528
+ entry_file_name = f"{entry}.py"
529
+ if not (app_src / entry_file_name).exists():
530
+ # Essayer les variantes
531
+ for f in [f"{entry}.py", "__main__.py", "main.py", "app.py", "run.py", "start.py"]:
532
+ if (app_src / f).exists():
533
+ entry_file_name = f
534
+ break
535
+ except Exception as e:
536
+ pass
537
+
538
+ # Créer le répertoire de sortie s'il n'existe pas
539
+ OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
540
+ print(f"[build_nsis_installer] 📁 Dossier de sortie: {OUTPUT_DIR}\n")
541
+
542
+ # === ÉTAPE 0 (PREMIÈRE ÉTAPE) : Initialisation ===
543
+ all_packages = initialize_build_environment(app_src)
544
+ print()
545
+
546
+ # === ÉTAPE 0bis : Copie du runtime Python ===
547
+ print(f"[build_nsis_installer] 🐍 Création du runtime Python embeddable...")
548
+ copy_python_runtime(OUTPUT_DIR, python_embed_path=python_embed_path)
549
+
550
+ # === ÉTAPE 0ter : Copie des packages pip détectés ===
551
+ if all_packages:
552
+ print(f"[build_nsis_installer] 📦 Copie des packages détectés...")
553
+ copy_packages(all_packages, OUTPUT_DIR)
554
+ else:
555
+ print(f"[build_nsis_installer] ℹ️ Aucun package à copier\n")
556
+
557
+ print(f"[build_nsis_installer] 📦 Préparation du payload...")
558
+
559
+ # Créer le répertoire de distribution temporaire
560
+ dist_dir = Path(tempfile.mkdtemp(prefix="nsis_dist_"))
561
+ try:
562
+ # === ÉTAPE 1: Préparation du payload ===
563
+ # Le payload doit être à la RACINE de dist, pas dans un sous-dossier
564
+ payload_dir = dist_dir / "dist"
565
+ payload_dir.mkdir(parents=True, exist_ok=True)
566
+
567
+ # === ÉTAPE 1bis: OBFUSCATION avec pyMetadidomi ===
568
+ print(f"[build_nsis_installer] 🔒 Obfuscation des fichiers Python avec pyMetadidomi...")
569
+ print()
570
+ obfuscated_app_dir = dist_dir / "obfuscated_app"
571
+ try:
572
+ # Obfusquer les fichiers .py à la racine
573
+ root_py_files = [f for f in app_src.glob('*.py') if f.is_file()]
574
+ if root_py_files:
575
+ temp_root = dist_dir / "_root_py_temp"
576
+ temp_root.mkdir(parents=True, exist_ok=True)
577
+ for f in root_py_files:
578
+ shutil.copy2(f, temp_root / f.name)
579
+ obfuscate_app(temp_root, obfuscated_app_dir, verbose=True)
580
+ # Obfusquer le dossier app/ si présent
581
+ app_dir = app_src / "app"
582
+ if app_dir.exists() and app_dir.is_dir():
583
+ obfuscate_app(app_dir, obfuscated_app_dir / "app", verbose=True)
584
+ # Vérifier que des fichiers obfusqués existent
585
+ obfuscated_files = list(obfuscated_app_dir.rglob('*.py'))
586
+ if not obfuscated_files:
587
+ raise RuntimeError("Aucun fichier obfusqué généré par pyMetadidomi")
588
+ print(f"[build_nsis_installer] ✓ Obfuscation terminée ({len(obfuscated_files)} fichiers)")
589
+ app_to_copy = obfuscated_app_dir
590
+ except Exception as e:
591
+ print(f"[build_nsis_installer] ❌ ERREUR: Obfuscation échouée - {e}")
592
+ print(f"[build_nsis_installer] ❌ ERREUR: Les fichiers ne seront PAS protégés dans l'installateur")
593
+ raise RuntimeError(f"Obfuscation requise mais échouée: {e}")
594
+ print()
595
+
596
+
597
+ # Copier TOUS les fichiers et dossiers de l'app à la RACINE du payload
598
+ # Inclure: fichiers obfusqués + fichiers non-Python + assets
599
+ # SAUF les fichiers d'entrée Python qui sont déjà embarqués dans le launcher.exe compilé
600
+ print(f"[build_nsis_installer] 📋 Copie de TOUS les fichiers et dossiers dans le payload (racine)...")
601
+ app_files_count = 0
602
+ dir_count = 0
603
+ excluded_count = 0
604
+
605
+ # Dossiers à exclure absolument
606
+ exclude_dirs = {'.git', '__pycache__', 'node_modules', '.build-temp', 'dist', '.egg-info',
607
+ '.pytest_cache', '.mypy_cache', 'venv', 'env', '.venv', '.tox', '.eggs',
608
+ 'python-embed-amd64','analyze_dependencies.py', 'python_embeddable', 'config.py', 'requirements.txt', 'README.md','python-embed-x64'}
609
+
610
+ # Fichiers d'entrée à exclure (déjà embarqués dans launcher.exe)
611
+ entry_files_excluded = {entry_file_name}
612
+
613
+ # Copier TOUS les fichiers et dossiers de app_src (l'original, complet)
614
+ # Utilisation de os.walk pour accélérer la copie et exclure dynamiquement les dossiers inutiles
615
+ print(f"[build_nsis_installer] ℹ️ Source complète: {app_src}")
616
+ print(f"[build_nsis_installer] ⏳ Copie en cours (exclusion: {', '.join(entry_files_excluded)})...")
617
+ print()
618
+ print(f"[build_nsis_installer] ⏳ Copie en cours...")
619
+ print()
620
+
621
+ for root, dirs, files in os.walk(app_src):
622
+ # Exclure dynamiquement les dossiers inutiles - cela évite de les parcourir
623
+ dirs[:] = [d for d in dirs if d not in exclude_dirs and not d.startswith('.')]
624
+
625
+ # Traiter les fichiers
626
+ for file in files:
627
+ try:
628
+ src_file = Path(root) / file
629
+
630
+ # EXCLUSION: Ne pas copier les fichiers d'entrée Python car ils sont déjà dans le launcher.exe
631
+ if src_file.name in entry_files_excluded:
632
+ excluded_count += 1
633
+ print(f"[build_nsis_installer] ⊘ {src_file.relative_to(app_src)} (exclu)")
634
+ continue
635
+
636
+ # Calculer le chemin relatif par rapport à app_src
637
+ relative_path = src_file.relative_to(app_src)
638
+ # Copier directement à la racine du payload
639
+ destination = payload_dir / relative_path
640
+
641
+ destination.parent.mkdir(parents=True, exist_ok=True)
642
+ shutil.copy2(src_file, destination)
643
+ app_files_count += 1
644
+
645
+ # Afficher la progression en temps réel
646
+ size_kb = src_file.stat().st_size / 1024
647
+ print(f"[build_nsis_installer] ✓ {relative_path} ({size_kb:.1f} KB)")
648
+ sys.stdout.flush() # Force l'affichage immédiat
649
+
650
+ except (FileNotFoundError, OSError) as e:
651
+ print(f"[build_nsis_installer] [WARN] Fichier ignoré: {src_file.name}")
652
+ continue
653
+
654
+ # Créer les dossiers vides
655
+ for dirname in dirs:
656
+ try:
657
+ src_dir = Path(root) / dirname
658
+ rel_path = src_dir.relative_to(app_src)
659
+ (payload_dir / rel_path).mkdir(parents=True, exist_ok=True)
660
+ dir_count += 1
661
+ except Exception:
662
+ continue
663
+
664
+ print()
665
+
666
+ # Copier les fichiers obfusqués .py par-dessus (pour remplacer les fichiers non-obfusqués)
667
+ # Sauf le point d'entrée - PRÉSERVER LA STRUCTURE
668
+ print(f"[build_nsis_installer] 🔒 Remplacement des fichiers .py par les versions obfusquées...")
669
+ print()
670
+
671
+ obfuscated_replaced = 0
672
+ for item in app_to_copy.rglob('*.py'):
673
+ try:
674
+ if item.name in entry_files_excluded:
675
+ continue
676
+ relative_path = item.relative_to(app_to_copy)
677
+ destination = payload_dir / relative_path
678
+ destination.parent.mkdir(parents=True, exist_ok=True)
679
+ shutil.copy2(item, destination)
680
+ obfuscated_replaced += 1
681
+ size_kb = item.stat().st_size / 1024
682
+ print(f"[build_nsis_installer] 🔐 {relative_path} (obfusqué - {size_kb:.1f} KB)")
683
+ sys.stdout.flush()
684
+ except Exception as e:
685
+ print(f"[build_nsis_installer] [WARN] Impossible de remplacer: {item.name}")
686
+ continue
687
+
688
+ print()
689
+ print(f"[build_nsis_installer] ✓ {obfuscated_replaced} fichier(s) .py obfusqué(s) remplacé(s)")
690
+ print()
691
+
692
+ print(f"[build_nsis_installer] ✓ {app_files_count} fichiers copiés dans le payload")
693
+ print(f"[build_nsis_installer] ✓ {dir_count} dossier(s) copié(s)")
694
+ print(f"[build_nsis_installer] ✓ {excluded_count} fichier(s) d'entrée exclu(s): {', '.join(entry_files_excluded)}")
695
+
696
+ # === ÉTAPE 2: Emballer Python Embeddable en ZIP pour installation ===
697
+ # Nous créons un archive zip (python_embeddable.zip) dans le payload
698
+ # et, pour le fallback (si compilation launcher échoue), on inclut
699
+ # un petit dossier contenant seulement python.exe
700
+ print(f"[build_nsis_installer] 🐍 Inclusion de Python Embeddable (archive ZIP)...")
701
+
702
+ # Chercher Python Embeddable dans build_tools/vendor (pas build_tools_py/vendor)
703
+ build_tools_dir = Path(__file__).parent.parent / "build_tools"
704
+ python_embed_src = build_tools_dir / "vendor" / "python_embeddable"
705
+
706
+ # Fallback: si trouvé dans build_tools_py/vendor
707
+ if not python_embed_src.exists():
708
+ python_embed_src = Path(__file__).parent / "vendor" / "python_embeddable"
709
+
710
+ python_zip_dst = payload_dir / "python_embeddable.zip"
711
+ python_embed_dst = payload_dir / "python_embeddable" # petit dossier pour fallback
712
+
713
+ if not python_embed_src.exists():
714
+ print(f"[build_nsis_installer] ⚠️ Python Embeddable non trouvé à: {python_embed_src}")
715
+ print(f"[build_nsis_installer] 💡 Assurez-vous que Python Embeddable est téléchargé via le builder")
716
+ # Créer un dossier vide pour que NSIS ne plante pas
717
+ python_embed_dst.mkdir(parents=True, exist_ok=True)
718
+ else:
719
+ # Supprimer l'archive s'il en existe une
720
+ try:
721
+ if python_zip_dst.exists():
722
+ python_zip_dst.unlink()
723
+ except Exception:
724
+ pass
725
+
726
+ # Créer l'archive ZIP (utilise shutil.make_archive)
727
+ try:
728
+ base_name = str(python_zip_dst.with_suffix(''))
729
+ shutil.make_archive(base_name, 'zip', root_dir=str(python_embed_src))
730
+ zip_size = python_zip_dst.stat().st_size if python_zip_dst.exists() else 0
731
+ print(f"[build_nsis_installer] ✓ Archive créée: {python_zip_dst.name} ({zip_size/1024/1024:.1f} MB)")
732
+ except Exception as e:
733
+ print(f"[build_nsis_installer] ⚠️ Échec de la création de l'archive: {e}")
734
+
735
+ # Créer un petit dossier contenant uniquement python.exe/pw pour fallback
736
+ try:
737
+ if python_embed_dst.exists():
738
+ shutil.rmtree(python_embed_dst, ignore_errors=True)
739
+ python_embed_dst.mkdir(parents=True, exist_ok=True)
740
+ src_py = python_embed_src / "python.exe"
741
+ src_pw = python_embed_src / "pythonw.exe"
742
+ if src_py.exists():
743
+ shutil.copy2(src_py, python_embed_dst / "python.exe")
744
+ if src_pw.exists():
745
+ shutil.copy2(src_pw, python_embed_dst / "pythonw.exe")
746
+ # Compter les fichiers du petit dossier
747
+ file_count = sum(1 for _ in python_embed_dst.rglob('*') if _.is_file())
748
+ print(f"[build_nsis_installer] ✓ Petit dossier fallback: {file_count} fichier(s)")
749
+ except Exception as e:
750
+ print(f"[build_nsis_installer] ⚠️ Erreur création dossier fallback: {e}")
751
+ # Créer un script batch d'extraction qui sera exécuté lors de l'installation
752
+ try:
753
+ extract_bat = payload_dir / "extract_python.bat"
754
+ extract_content = (
755
+ "@echo off\r\n"
756
+ "REM Extraction de python_embeddable.zip vers le dossier python_embeddable\r\n"
757
+ "powershell -NoProfile -ExecutionPolicy Bypass -Command \"try { Expand-Archive -LiteralPath '%~dp0python_embeddable.zip' -DestinationPath '%~dp0python_embeddable' -Force } catch { exit 0 }\"\r\n"
758
+ "exit /b %ERRORLEVEL%\r\n"
759
+ )
760
+ with open(extract_bat, 'w', encoding='utf-8') as f:
761
+ f.write(extract_content)
762
+ print(f"[build_nsis_installer] ✓ Script d'extraction créé: {extract_bat.name}")
763
+ except Exception as e:
764
+ print(f"[build_nsis_installer] ⚠️ Erreur création script d'extraction: {e}")
765
+
766
+ # === ÉTAPE 3: Copier l'icône ===
767
+ if icon_path:
768
+ icon_path = Path(icon_path).resolve()
769
+ found_icon = None
770
+ # Chercher l'icône à la racine du projet
771
+ root_icon = Path(app_src) / "icon.ico"
772
+ if root_icon.exists():
773
+ found_icon = root_icon
774
+ elif icon_path.exists():
775
+ found_icon = icon_path
776
+ # Sinon, chercher dans assets
777
+ assets_icon = Path(app_src) / "assets" / "icon.ico"
778
+ if not found_icon and assets_icon.exists():
779
+ found_icon = assets_icon
780
+ if found_icon:
781
+ assets_dir = payload_dir / "assets"
782
+ assets_dir.mkdir(parents=True, exist_ok=True)
783
+ shutil.copy2(found_icon, assets_dir / "icon.ico")
784
+ print(f"[build_nsis_installer] ✓ Icône copiée: {found_icon}")
785
+ else:
786
+ print(f"[build_nsis_installer] ⚠️ Icône non trouvée à la racine, dans assets ou au chemin fourni: {icon_path}")
787
+
788
+ # === ÉTAPE 3bis: Créer le launcher.exe compilé ===
789
+ launcher_exe = payload_dir / "launcher.exe"
790
+
791
+ # Essayer de compiler le launcher C avec le bon point d'entrée
792
+ print(f"[build_nsis_installer] 🔨 Compilation du launcher avec le point d'entrée: {entry_file_name}")
793
+ compilation_success = compile_launcher_c(launcher_exe, gui_mode=gui_mode, app_src=app_src, entry_file=entry_file_name)
794
+
795
+ if not compilation_success:
796
+ # Fallback: copier python.exe si la compilation échoue
797
+ print(f"[build_nsis_installer] 🔄 Fallback: utilisation de python.exe comme launcher")
798
+ if python_embed_dst.exists():
799
+ pythonw_path = python_embed_dst / "python.exe"
800
+ if pythonw_path.exists():
801
+ shutil.copy2(pythonw_path, launcher_exe)
802
+ print(f"[build_nsis_installer] ✓ Launcher .exe créé (copie de python.exe)")
803
+ else:
804
+ python_path = python_embed_dst / "python.exe"
805
+ if python_path.exists():
806
+ shutil.copy2(python_path, launcher_exe)
807
+ print(f"[build_nsis_installer] ✓ Launcher .exe créé (copie de python.exe)")
808
+
809
+ # === ÉTAPE 3ter: Appliquer l'icône et métadonnées au launcher avec rcedit ===
810
+ if launcher_exe.exists():
811
+ print(f"[build_nsis_installer] 🎨 Application des métadonnées au launcher...")
812
+ try:
813
+ # Chercher rcedit.exe dans le vendor
814
+ build_tools_dir = Path(__file__).parent.parent / "build_tools"
815
+ rcedit_paths = [
816
+ build_tools_dir / "vendor" / "rcedit" / "node_modules" / "rcedit" / "bin" / "rcedit.exe",
817
+ build_tools_dir / "vendor" / "rcedit" / "node_modules" / "rcedit" / "bin" / "rcedit-x64.exe",
818
+ ]
819
+
820
+ rcedit_bin = None
821
+ for p in rcedit_paths:
822
+ if p.exists():
823
+ rcedit_bin = p
824
+ break
825
+
826
+ if rcedit_bin:
827
+ # Préparer les arguments rcedit
828
+ rcedit_cmd = [str(rcedit_bin), str(launcher_exe)]
829
+
830
+ # Ajouter l'icône si disponible
831
+ assets_dir = payload_dir / "assets"
832
+ icon_file = assets_dir / "icon.ico"
833
+ if icon_file.exists():
834
+ print(f"[build_nsis_installer] - Icône: {icon_file}")
835
+ rcedit_cmd.extend(["--set-icon", str(icon_file)])
836
+ else:
837
+ print(f"[build_nsis_installer] ⚠️ Icône non trouvée: {icon_file}")
838
+
839
+ # Ajouter les métadonnées version
840
+ print(f"[build_nsis_installer] - ProductName: {app_name}")
841
+ print(f"[build_nsis_installer] - Version: {version}")
842
+ print(f"[build_nsis_installer] - Company: {company}")
843
+
844
+ rcedit_cmd.extend([
845
+ "--set-version-string", "ProductName", app_name,
846
+ "--set-version-string", "FileDescription", description or f"Application {app_name}",
847
+ "--set-version-string", "CompanyName", company,
848
+ "--set-version-string", "LegalCopyright", copyright or f"© 2024 {company}",
849
+ "--set-version-string", "OriginalFilename", f"{app_name}.exe",
850
+ "--set-version-string", "InternalName", app_name,
851
+ "--set-file-version", version,
852
+ "--set-product-version", version,
853
+ ])
854
+
855
+ # Exécuter rcedit
856
+ print(f"[build_nsis_installer] Exécution de rcedit...")
857
+ result = subprocess.run(rcedit_cmd, capture_output=True, text=True, encoding='utf-8', errors='replace')
858
+ if result.returncode == 0:
859
+ print(f"[build_nsis_installer] ✓ Métadonnées appliquées au launcher")
860
+ else:
861
+ print(f"[build_nsis_installer] ⚠️ Erreur rcedit (code {result.returncode})")
862
+ if result.stdout:
863
+ print(f"[build_nsis_installer] stdout: {result.stdout[:200]}")
864
+ if result.stderr:
865
+ print(f"[build_nsis_installer] stderr: {result.stderr[:200]}")
866
+ else:
867
+ print(f"[build_nsis_installer] ℹ️ rcedit.exe non trouvé - métadonnées non appliquées")
868
+ except Exception as e:
869
+ print(f"[build_nsis_installer] ⚠️ Erreur lors de l'application des métadonnées: {e}")
870
+
871
+ # === ÉTAPE 3quater: Renommer launcher.exe en {app_name}.exe ===
872
+ if launcher_exe.exists():
873
+ app_exe = payload_dir / f"{app_name}.exe"
874
+ shutil.move(str(launcher_exe), str(app_exe))
875
+ print(f"[build_nsis_installer] ✓ Launcher renommé en: {app_name}.exe")
876
+ launcher_exe = app_exe # Mettre à jour la variable pour les étapes suivantes
877
+
878
+ # === ÉTAPE 4: Générer le fichier NSI ===
879
+ print(f"[build_nsis_installer] 📝 Génération du script NSIS...")
880
+
881
+ # Utiliser le template Python spécifique
882
+ nsis_template = Path(__file__).parent / "templates" / "nsis_template_python.nsi"
883
+ if not nsis_template.exists():
884
+ raise FileNotFoundError(f"Template NSIS non trouvé: {nsis_template}")
885
+
886
+ nsi_file = dist_dir / "installer.nsi"
887
+ with open(nsis_template, "r", encoding="utf-8") as f:
888
+ nsi_content = f.read()
889
+
890
+ # Remplacer les variables (format NSIS: ${VAR})
891
+ # Utiliser des chemins ABSOLUS pour que NSIS les trouve
892
+ payload_dir_abs = (payload_dir).resolve()
893
+ assets_dir_abs = payload_dir_abs / "assets"
894
+
895
+ replacements = {
896
+ '${PRODUCT_NAME}': app_name,
897
+ '${VERSION}': version,
898
+ '${COMPANY_NAME}': company,
899
+ '${APP_DESCRIPTION}': description or f"Application {app_name}",
900
+ '${COPYRIGHT}': copyright or f"© 2024 {company}",
901
+ '${HELP_LINK}': "",
902
+ '${ABOUT_URL}': "",
903
+ '${UPDATE_URL}': "",
904
+ '${PAYLOAD_DIR}': str(payload_dir_abs).replace('/', '\\'), # Chemin ABSOLU
905
+ '${OUTPUT_SETUP_EXE}': str(output_exe).replace('/', '\\'),
906
+ '${APP_ICON}': str(assets_dir_abs / "icon.ico").replace('/', '\\') if icon_path else "",
907
+ }
908
+
909
+ for key, value in replacements.items():
910
+ nsi_content = nsi_content.replace(key, value)
911
+
912
+ with open(nsi_file, "w", encoding="utf-8") as f:
913
+ f.write(nsi_content)
914
+ print(f"[build_nsis_installer] ✓ Script NSI généré")
915
+
916
+ # === ÉTAPE 5: Trouver NSIS ===
917
+ print(f"[build_nsis_installer] 🔍 Recherche de makensis.exe...")
918
+
919
+ # NSIS est dans build_tools/vendor, pas build_tools_py/vendor
920
+ build_tools_dir = Path(__file__).parent.parent / "build_tools"
921
+
922
+ nsis_paths = [
923
+ build_tools_dir / "vendor" / "nsis" / "nsis-3.09" / "Bin" / "makensis.exe",
924
+ build_tools_dir / "vendor" / "nsis" / "nsis-3.09" / "makensis.exe",
925
+ build_tools_dir / "vendor" / "nsis" / "makensis.exe",
926
+ Path(__file__).parent / "vendor" / "nsis" / "nsis-3.09" / "Bin" / "makensis.exe",
927
+ Path(__file__).parent / "vendor" / "nsis" / "nsis-3.09" / "makensis.exe",
928
+ Path(__file__).parent / "vendor" / "nsis" / "makensis.exe",
929
+ ]
930
+
931
+ nsis_bin = None
932
+ for p in nsis_paths:
933
+ if p.exists():
934
+ nsis_bin = p
935
+ print(f"[build_nsis_installer] ✓ NSIS trouvé à: {p}")
936
+ break
937
+
938
+ if not nsis_bin:
939
+ # Chercher dans le PATH
940
+ nsis_bin_path = shutil.which("makensis.exe")
941
+ if nsis_bin_path:
942
+ nsis_bin = Path(nsis_bin_path)
943
+ print(f"[build_nsis_installer] ✓ NSIS trouvé dans PATH: {nsis_bin}")
944
+
945
+ if not nsis_bin:
946
+ print(f"[build_nsis_installer] ❌ makensis.exe introuvable")
947
+ print(f"[build_nsis_installer] Chemins vérifiés:")
948
+ for p in nsis_paths:
949
+ print(f" - {p}: {'✓ EXISTS' if p.exists() else '✗ NOT FOUND'}")
950
+ raise FileNotFoundError(f"makensis.exe non trouvé. Vérifiez que NSIS est installé.")
951
+
952
+ # === ÉTAPE 6: Créer le répertoire de sortie ===
953
+ output_exe.parent.mkdir(parents=True, exist_ok=True)
954
+
955
+ # === ÉTAPE 7: Générer l'installateur ===
956
+ print(f"[build_nsis_installer] 🔨 Génération de l'installateur NSIS...")
957
+ print(f"[build_nsis_installer] Répertoire de travail: {dist_dir}")
958
+ print(f"[build_nsis_installer] Script: {nsi_file}")
959
+ print(f"[build_nsis_installer] Sortie: {output_exe}")
960
+ print()
961
+
962
+ result = subprocess.run(
963
+ [str(nsis_bin), f"/DOUTPUT_SETUP_EXE={output_exe}", str(nsi_file)],
964
+ cwd=str(dist_dir),
965
+ capture_output=False, # Afficher la sortie en temps réel
966
+ text=True
967
+ )
968
+
969
+ print()
970
+
971
+ if result.returncode != 0:
972
+ print(f"[build_nsis_installer] ❌ makensis a échoué avec le code {result.returncode}")
973
+ raise RuntimeError(f"makensis a échoué avec le code {result.returncode}")
974
+
975
+ if not output_exe.exists():
976
+ raise FileNotFoundError(f"L'installateur n'a pas été généré: {output_exe}")
977
+
978
+ print(f"[build_nsis_installer] ✅ Installateur généré avec succès!")
979
+ print(f"[build_nsis_installer] Fichier: {output_exe}")
980
+ print(f"[build_nsis_installer] Taille: {output_exe.stat().st_size / (1024*1024):.2f} MB")
981
+
982
+ # === RÉSUMÉ DÉTAILLÉ ===
983
+ safe_print("\n" + "=" * 60)
984
+ safe_print("[OK] BUNDLE CREE AVEC SUCCES!")
985
+ safe_print("=" * 60)
986
+
987
+ def safe_getsize(f):
988
+ try:
989
+ return os.path.getsize(f)
990
+ except (FileNotFoundError, OSError):
991
+ return 0
992
+
993
+ def safe_calculate_size(path):
994
+ """Calcule la taille totale en ignorant les erreurs de chemin invalide"""
995
+ try:
996
+ total = 0
997
+ for item in path.rglob('*'):
998
+ if item.is_file():
999
+ total += safe_getsize(item)
1000
+ return total / (1024*1024)
1001
+ except (FileNotFoundError, OSError):
1002
+ return 0
1003
+
1004
+ total_size = safe_calculate_size(Path(OUTPUT_DIR))
1005
+ python_size = safe_calculate_size(Path(OUTPUT_DIR) / "python_embeddable") if (Path(OUTPUT_DIR) / "python_embeddable").exists() else 0
1006
+ app_size = safe_calculate_size(Path(OUTPUT_DIR) / "app") if (Path(OUTPUT_DIR) / "app").exists() else 0
1007
+
1008
+ safe_print(f"\n[STRUCTURE]")
1009
+ safe_print(f" - python_embeddable/ (Python {get_python_version()[0]}.{get_python_version()[1]}): {python_size:.1f} MB")
1010
+ safe_print(f"\n[RESUME]")
1011
+ safe_print(f" Taille totale: {total_size:.1f} MB")
1012
+ safe_print(f" Python: {get_python_dll_name()}")
1013
+ safe_print(f" Packages: {len(all_packages)} detectes" if all_packages else " Packages: Aucun")
1014
+
1015
+ return str(output_exe)
1016
+
1017
+ finally:
1018
+ # Nettoyer le répertoire temporaire
1019
+ shutil.rmtree(dist_dir, ignore_errors=True)
1020
+ def parse_args():
1021
+ p = argparse.ArgumentParser(description="Génère un installateur NSIS pour une app Python")
1022
+ p.add_argument("--app-src", required=True, help="Chemin vers le dossier source de l'application à packager")
1023
+ p.add_argument("--output", required=True, help="Chemin de l'installateur de sortie (.exe)")
1024
+ p.add_argument("--app-name", required=True, help="Nom de l'application")
1025
+ p.add_argument("--version", default="1.0.0", help="Version de l'application (défaut: 1.0.0)")
1026
+ p.add_argument("--company", default="test", help="Nom de la compagnie (défaut: test)")
1027
+ p.add_argument("--description", default="", help="Description de l'application")
1028
+ p.add_argument("--copyright", default="", help="Informations de copyright")
1029
+ p.add_argument("--icon", default=None, help="Chemin vers l'icône (.ico)")
1030
+ p.add_argument("--gui", action="store_true", help="Compiler en mode GUI (pas de console). Par défaut: console")
1031
+ p.add_argument("--python-embed", default=None, help="Chemin vers un Python embarqué personnalisé (ex: python-embed-amd64). Par défaut: Python système")
1032
+ return p.parse_args()
1033
+
1034
+ if __name__ == "__main__":
1035
+ args = parse_args()
1036
+ try:
1037
+ output = build_nsis_installer(
1038
+ args.app_src, # utiliser app_src
1039
+ args.output,
1040
+ args.app_name,
1041
+ args.version,
1042
+ company=args.company,
1043
+ description=args.description,
1044
+ copyright=args.copyright,
1045
+ icon_path=args.icon,
1046
+ gui_mode=args.gui,
1047
+ python_embed_path=args.python_embed
1048
+ )
1049
+ print(f"\n✅ Succès! Installateur: {output}")
1050
+ except Exception as e:
1051
+ print(f"\n❌ Erreur: {e}")
1052
+ import traceback
1053
+ traceback.print_exc()
1054
+ exit(1)