Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2599a72a1 |
No files matched your search
@@ -87,6 +87,14 @@ jobs:
|
|||||||
- name: Build exe
|
- name: Build exe
|
||||||
run: python build_windows.py
|
run: python build_windows.py
|
||||||
|
|
||||||
|
- name: Unblock files (rimuovi MOTW pre-zip)
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
# Per ridurre l'incidenza del bug "Failed to resolve
|
||||||
|
# Python.Runtime.Loader.Initialize" causato da Mark of the Web.
|
||||||
|
Get-ChildItem -Path dist/MusicTools -Recurse -Include *.dll,*.exe,*.pyd `
|
||||||
|
| Unblock-File
|
||||||
|
|
||||||
- name: Package -> zip
|
- name: Package -> zip
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
VERSION = "v1.7.6"
|
VERSION = "v1.7.7"
|
||||||
|
|
||||||
|
|
||||||
APP_NAME = "MusicTools"
|
APP_NAME = "MusicTools"
|
||||||
|
|||||||
@@ -11,20 +11,37 @@ from pathlib import Path
|
|||||||
# senza l'inizializzazione esplicita. Fix conferma:
|
# senza l'inizializzazione esplicita. Fix conferma:
|
||||||
# https://github.com/pythonnet/pythonnet/issues/2178
|
# https://github.com/pythonnet/pythonnet/issues/2178
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
try:
|
# ============================================================
|
||||||
# Punta pythonnet ai propri file runtime dentro al bundle PyInstaller.
|
# Fix Windows: rimuovi Mark of the Web (MOTW) dalle DLL bundled.
|
||||||
|
# Quando l'utente scarica il .zip dal browser, Windows aggiunge
|
||||||
|
# uno stream NTFS Zone.Identifier a TUTTI i file estratti.
|
||||||
|
# .NET Framework 4.x rifiuta silenziosamente di risolvere i
|
||||||
|
# symbol export degli assembly managed con MOTW -> il loader
|
||||||
|
# netfx di pythonnet fallisce con "Failed to resolve
|
||||||
|
# Python.Runtime.Loader.Initialize".
|
||||||
|
# Soluzione: cancelliamo lo stream :Zone.Identifier da ogni
|
||||||
|
# .dll/.exe del bundle al primo avvio (operazione idempotente
|
||||||
|
# e sicura: l'utente ha gia eseguito l'exe esplicitamente).
|
||||||
|
# Vedi: https://github.com/r0x0r/pywebview/issues/1215
|
||||||
|
# ============================================================
|
||||||
if getattr(sys, "frozen", False):
|
if getattr(sys, "frozen", False):
|
||||||
|
try:
|
||||||
|
import ctypes
|
||||||
|
_kernel32 = ctypes.windll.kernel32
|
||||||
_bundle = Path(sys._MEIPASS) # type: ignore[attr-defined]
|
_bundle = Path(sys._MEIPASS) # type: ignore[attr-defined]
|
||||||
_rt = _bundle / "pythonnet" / "runtime"
|
for _f in _bundle.rglob("*"):
|
||||||
if _rt.exists():
|
if _f.suffix.lower() in (".dll", ".exe", ".pyd"):
|
||||||
|
_kernel32.DeleteFileW(f"{_f}:Zone.Identifier")
|
||||||
|
except Exception as _e:
|
||||||
|
print(f"[bootstrap] MOTW cleanup failed: {_e}")
|
||||||
|
|
||||||
|
try:
|
||||||
|
if getattr(sys, "frozen", False):
|
||||||
os.environ["PYTHONNET_RUNTIME"] = "netfx"
|
os.environ["PYTHONNET_RUNTIME"] = "netfx"
|
||||||
os.environ["PYTHONNET_PYDLL"] = sys.executable
|
|
||||||
from pythonnet import load as _pythonnet_load
|
from pythonnet import load as _pythonnet_load
|
||||||
_pythonnet_load("netfx")
|
_pythonnet_load("netfx")
|
||||||
import clr # noqa: F401 - inizializza il loader
|
import clr # noqa: F401 - inizializza il loader
|
||||||
except Exception as _e:
|
except Exception as _e:
|
||||||
# Se il preload fallisce, lasciamo che webview tenti comunque:
|
|
||||||
# l'errore originale verra' mostrato con stack trace.
|
|
||||||
print(f"[bootstrap] preload pythonnet failed: {_e}")
|
print(f"[bootstrap] preload pythonnet failed: {_e}")
|
||||||
|
|
||||||
import webview
|
import webview
|
||||||
|
|||||||
+2
-1
@@ -5,4 +5,5 @@ mutagen>=1.47.0
|
|||||||
pyobjc-core>=10.0 ; sys_platform == "darwin"
|
pyobjc-core>=10.0 ; sys_platform == "darwin"
|
||||||
pyobjc-framework-Cocoa>=10.0 ; sys_platform == "darwin"
|
pyobjc-framework-Cocoa>=10.0 ; sys_platform == "darwin"
|
||||||
pyobjc-framework-WebKit>=10.0 ; sys_platform == "darwin"
|
pyobjc-framework-WebKit>=10.0 ; sys_platform == "darwin"
|
||||||
pythonnet==3.0.3 ; sys_platform == "win32"
|
pythonnet==3.0.5 ; sys_platform == "win32"
|
||||||
|
clr-loader==0.2.7.post0 ; sys_platform == "win32"
|
||||||
Reference in new issue
Block a user