Mettetevi comodi che questo è un thread lungo.
Qui (su Threads, n.d.M.) non lo pubblicizzo molto ma io sono il creatore di ZipGenius, un’applicazione per la creazione e gestione di archivi compressi – prevalentemente file .ZIP. Finalmente ho trovato il tempo per portare a termine la totale riscrittura della mia applicazione e questo mi ha portato a fare delle considerazioni su Windows e la Microsoft tutta.
Metto le mani avanti: io adoro Microsoft e adoro Windows però in certe circostanze mi vien voglia di prendere un aereo e andare fino a Redmond per guardare qualche dirigente negli occhi e chiedere il perché di certe scelte. Ecco, mi sono imbattuto da poco in una di quelle incongruenze di Windows che urlano vendetta.
Antefatto.
Come ogni gestore di archivi zip che si rispetti, la mia app apre un archivio zip, ne legge l’elenco dei file e lo mostrta all’utente, indicando varie informazioni su ciascun file; fra queste informazioni, vi sono gli “attributi” del file, cioé quelle informazioni che dicono al sistema operativo come deve trattare quel file: se si tratti di un file pronto per l’archiviazione (“A“), se sia una cartella (“D“), un file a sola lettura (“R“), un file nascosto (“H“) o di sistema (“S“). Oltre agli “attributi”, il formato zip archivia anche il tipo di filesystem dal quale il file proviene (“FAT” per Windows, “UNIX” per Linux/Unix, ecc.) ma questa, solitamente è un’informazione prevalentemente a uso e consumo delle applicazioni per la compressione (per stabilire come gestire il dato sugli attributi.
Fatto.
L’aggiornamento 24H2 di Windows 11 ha introdotto la possibilità di creare archivi ZIP, 7Z e TAR direttamente e senza l’uso di app di terze parti: basta selezionare uno o più file sul desktop con il tasto destro e scegliere nel menù contestuale quale tipo di archivio Windows creerà con quei files. Volendo creare un archivio zip per il debug della mia app, quella è una soluzione rapida e comoda…
Non avevo considerato l’inaffidabilità di tutto ciò che viene proprinato “di serie” da MS.
Creo un archivio zip e lo apro con la mia app durante il debug. Noto che l’elenco dei file non mostra alcu a informazione nella colonna “Attributi”. Il minimo sindacale sarebbe dovuto essere una “A” (l’attributo di default per il 95% dei file in Windows) e invece niente. Ho buttato un paio di giorni pensando a errori nel mio codice. Nulla da fare.
Le mie buone prassi mi spingono a togliere le mani dalla tastiera e ragionare su quel che vedevo. Lì si accende una lampadina e decido di aprire lo stesso archivio con WinRAR e 7-zip. Scopro così che il file dentro l’archivio è stato compresso (da Windows 11) come se fosse destinato a sistemi Unix-like (come Linux), dunque gli attributi erano i permessi “alla Linux” (es.: -rw-rw-r–). Ecco perché il mio codice non riusciva a elaborare quel dato “strano” restituito dallo zip.
Considerazioni.
Dunque Windows 11 crea archivi zip come se – al contrario – fosse una distribuzione Linux a farlo… La colpa è dell’uso sbagliato della libreria open source “libarchive” fatto da chi ha sviluppato la nuova funzione di Esplora File. Sembra una cosa da nulla ma questo può avere conseguenze devastanti in diversi ambienti di lavoro, laddove vi è la necessità di fare frequenti backup incrementali o differenziali di molti file.
Conclusioni.
Postilla.
Dimostrazione.
Ho creato il primo archivio, Desktop_1.zip, usando 7-zip mentre il secondo, Desktop-2.zip, è stato creato usando le funzioni di compressione integrate in Windows 11 24H2. Come si vede, gli attributi dei files sono salvati in modo diverso.