Ricostruzione del pacchetto ZZBlocks 0.4.30 TEST

Il pacchetto distribuito e' gia' compilato: queste istruzioni sono soltanto
per chi vuole ricostruirlo dai sorgenti, non per gli utenti del laboratorio.

Occorrono Python 3.11 o successivo e NSIS 3 Unicode con MUI2 e nsExec.
Eseguire dalla cartella del progetto:
  python installer/build_installer.py --work CARTELLA_BUILD --makensis PERCORSO_MAKENSIS

Aggiungere --online per ricostruire il setup compatto, che scarica gli
strumenti durante l’installazione amministrativa.

Il processo offline scarica gli archivi ufficiali usando indici e checksum fissati,
prepara gli strumenti offline e crea la cartella con EXE e strumenti-offline.
Richiede molto spazio per cache, archivi e strumenti estratti. La connessione
Internet serve durante questa ricostruzione, non durante l'installazione.

La cartella installer/prebuilt contiene il launcher Windows x64 compilato
da launcher.c, launcher.rc e launcher.manifest. Il suo SHA-256 e' registrato
in runtime-versions.json. Per ricompilarlo con MinGW-w64, dalla cartella installer:
  windres launcher.rc -o launcher-res.o
  gcc -std=c11 -O2 -Wall -Wextra -Werror -municode -static launcher.c launcher-res.o -o prebuilt/ZZBlocks.exe -luser32 -ladvapi32 -lshell32
Usare gli eseguibili windres/gcc del target x86_64-w64-mingw32, poi aggiornare
il checksum del launcher in runtime-versions.json. Il launcher non usa il PATH
per scegliere Python e non richiede elevazione.

Le API _winapi.CreateJunction del runtime incluso collegano i pacchetti
comuni alla cartella cli-state personale. inventory.yaml e gli indici restano
scrivibili dall'utente. Non vengono allargati i permessi di Program Files.

La separazione utente/macchina e' attivata solo dal file machine-install.json,
generato nello staging dell'installer. Non inserirlo nella distribuzione ZIP
personale con AVVIA_WINDOWS.bat.

Le prove su Windows reale e su USB vanno ripetute dopo ogni modifica al
launcher, al runtime o al confezionamento dell'installer.

Aggiornamento compatto 0.4.29 -> 0.4.30:
  python installer/build_update.py --work CARTELLA_BUILD --makensis PERCORSO_MAKENSIS
Include solo applicazione, librerie ed esempi. Richiede l'installazione macchina
0.4.29 (oppure 0.4.30 per ripetere l'aggiornamento); non include runtime o core.
Il launcher precompilato e il runtime restano quelli verificati della 0.4.29.
