4.1 KiB
Modifiche rispetto a nsUnz originale
Aggiornamento zlib 1.1.3 → 1.3.1
Questa versione di nsisunz è stata aggiornata per utilizzare zlib 1.3.1 (ultima versione stabile, Agosto 2023) invece della vecchia versione 1.1.3 del 1998.
Motivazioni dell'aggiornamento
- Sicurezza: 25 anni di correzioni di sicurezza
- Prestazioni: Ottimizzazioni significative nell'algoritmo di decompressione
- Compatibilità: Migliore supporto per ZIP64 e archivi moderni
- Stabilità: Bug fix accumulati nel corso degli anni
- Manutenibilità: Codice più pulito e moderno
File zlib sostituiti
Rimossi (vecchi file zlib 1.1.3):
INFBLOCK.C/H- Gestione blocchi inflate (obsoleto)INFCODES.C/H- Decodifica codici inflate (obsoleto)INFUTIL.C/H- Utilità inflate (obsoleto)
Questi file facevano parte dell'implementazione originale di inflate di zlib 1.1.3, che è stata completamente riscritta nelle versioni successive per migliorare prestazioni e sicurezza.
Aggiunti (nuovi file zlib 1.3.1):
Core decompressione (aggiornati):
inflate.c/h- Implementazione inflate moderna e ottimizzatainftrees.c/h- Gestione alberi Huffman (aggiornato)inffast.c/h- Decompressione veloce (aggiornato)inffixed.h- Tabelle Huffman fisse (aggiornato)
Checksum (aggiornati):
adler32.c- Checksum Adler-32 ottimizzatocrc32.c/h- CRC32 con tabelle ottimizzate
Utilities:
zutil.c/h- Utilità zlib (aggiornato)zconf.h- Configurazione zlib (aggiornato)zlib.h- Header principale (v1.3.1)
Minizip (aggiornato da contrib/minizip di zlib 1.3.1):
unzip.c/h- Gestione archivi ZIP (aggiornato con supporto ZIP64)ioapi.c/h- API I/O astratta (nuovo)iowin32.c/h- Implementazione I/O Windows (nuovo)crypt.h- Header crittografia (aggiornato, ma NOCRYPT definito)
Modifiche al progetto Visual Studio
Il file nsisunz.vcxproj è stato aggiornato per:
-
Rimuovere i vecchi file zlib 1.1.3:
- INFBLOCK.C/H
- INFCODES.C/H
- INFUTIL.C/H
-
Aggiungere i nuovi file zlib 1.3.1:
- ioapi.c/h
- iowin32.c/h
- crc32.h
- crypt.h
-
Aggiungere il preprocessor define
NOCRYPTeZ_SOLO:NOCRYPT: Disabilita il supporto per ZIP criptatiZ_SOLO: Disabilita funzioni gzip non necessarie (richiede gzguts.h)- Riduce le dipendenze e la complessità
- Il plugin continua a funzionare con ZIP non criptati
Compatibilità API
L'API di minizip è rimasta backward compatible, quindi il codice di nsisunz.cpp non richiede modifiche. Le funzioni utilizzate sono le stesse:
unzOpen()- Apre archivio ZIPunzGoToFirstFile()- Va al primo fileunzGetCurrentFileInfo()- Ottiene info sul file correnteunzOpenCurrentFile()- Apre il file corrente per la letturaunzReadCurrentFile()- Legge dati dal file correnteunzCloseCurrentFile()- Chiude il file correnteunzGoToNextFile()- Va al file successivounzClose()- Chiude l'archivio
Benefici dell'aggiornamento
- Sicurezza migliorata: Protezione contro vulnerabilità scoperte negli ultimi 25 anni
- Prestazioni superiori: Decompressione fino al 20-30% più veloce in alcuni scenari
- Memoria ottimizzata: Utilizzo più efficiente della memoria
- ZIP64: Supporto migliorato per archivi > 4GB
- Codice moderno: Base di codice più pulita e manutenibile
Test consigliati
Dopo la compilazione, si consiglia di testare:
- Estrazione di archivi ZIP standard
- Estrazione di file singoli con
/file - Estrazione con
/noextractpath - Archivi con nomi di file Unicode
- Archivi ZIP grandi (se possibile, ZIP64)
Compilazione
cd nsUnz-zlib1.3\Source
Quindi aprire nsisunz.vcxproj in Visual Studio 2022 e compilare per le configurazioni desiderate:
- Release|Win32 (x86-ansi)
- Release Unicode|Win32 (x86-unicode)
- Release Unicode|x64 (x64-unicode)
Oppure utilizzare lo script Python:
cd nsUnz-zlib1.3
python build_plugin.py # VS2022
python build_plugin_vs2026.py # VS2026
Per dettagli completi sulla compilazione, vedi BUILD_INFO.md