v1.7.14: fix definitivo registrazione macOS — AVCaptureSession in-process
Dopo che codesign --info-plist e wrap in sub-bundle .app si sono rivelati strade morte (macOS 14+ TCC e' troppo severo per ad-hoc signed binaries), riscritta la registrazione macOS per usare PyObjC + AVCaptureSession nel processo Python principale. Il main MusicTools ha il TCC del bundle (NSMicrophoneUsageDescription nell'Info.plist), e usando AVFoundation IN-PROCESS il permesso viene applicato correttamente. ffmpeg subprocess viene usato SOLO per la conversione CAF -> MP3 dopo lo stop (operazione su file, niente accesso microfono = niente TCC). Aggiunto pyobjc-framework-AVFoundation a requirements. core/paths.py: ripristinato lookup semplice in Contents/Frameworks/ (non serve piu' cercare in sub-bundle). build_macos.py: wrap_subprocess_in_bundle disabilitato. Diagnosi crash report v1.7.13 + investigazione TCC behavior confermano: PyObjC AVCaptureSession in-process e' l'unica soluzione affidabile senza Developer ID Apple. Vedi: https://www.qt.io/blog/the-curious-case-of-the-responsible-process
This commit is contained in:
1 parent
7dd793253b
commit
0e14d161d0
4 files changed
+357
-227
No files matched your search
+6
-1
@@ -239,7 +239,12 @@ def run_pyinstaller():
|
||||
if app_path.exists():
|
||||
log(f"Build completata: {app_path}")
|
||||
patch_info_plist(app_path)
|
||||
wrap_subprocess_in_bundle(app_path)
|
||||
# NOTA: dal v1.7.14 il microfono viene letto direttamente da
|
||||
# PyObjC/AVCaptureSession nel processo Python (che ha il TCC del
|
||||
# bundle), non da ffmpeg subprocess. ffmpeg fa solo la conversione
|
||||
# CAF -> MP3 (no microfono = no TCC). Per questo non serve piu'
|
||||
# incapsularlo in un sub-bundle .app con NSMicrophoneUsageDescription.
|
||||
# wrap_subprocess_in_bundle(app_path)
|
||||
adhoc_codesign(app_path)
|
||||
# Mostra dimensione
|
||||
size = sum(f.stat().st_size for f in app_path.rglob("*") if f.is_file())
|
||||
|
||||
Reference in new issue
Block a user