Comprende un modulo di file eseguibile, un modulo usato per eseguire file non compressi da file compressi. Un tale file compresso non richiede un programma esterno per decomprimere il contenuto del file autoestraente, e può eseguire l’operazione da solo. Tuttavia, gli archiviatori di file come WinRAR possono ancora trattare i file autoestraenti come qualsiasi altro file compresso. Gli utenti che non vogliono eseguire il file autoestraente che hanno ricevuto (per esempio, quando può contenere un virus) possono usare l’archiviatore di file per visualizzare o decomprimere il suo contenuto senza eseguire codice eseguibile.
Eseguendo un archivio autoestraente sotto un sistema operativo che lo supporta, il contenuto dell’archivio viene estratto e memorizzato come file sul disco. Spesso, l’auto-estrattore incorporato supporta una serie di argomenti della linea di comando per controllare il comportamento, ad esempio per specificare la posizione di destinazione o selezionare solo file specifici da estrarre.
Gli archivi non autoestraenti contengono solo i file archiviati e quindi devono essere estratti con un programma compatibile. Gli archivi autoestraenti non possono autoestrarsi sotto un sistema operativo diverso, ma il più delle volte possono ancora essere aperti con un estrattore adatto poiché questo strumento ignorerà la parte eseguibile del file ed estrarrà invece solo la risorsa dell’archivio. In alcuni casi questo richiede che l’eseguibile autoestraente sia rinominato per contenere un’estensione di file associata al packer corrispondente. I file autoestraenti di solito hanno un’estensione .exe come altri file eseguibili.
Per esempio, un archivio può essere chiamato somefiles.zip – può essere aperto sotto qualsiasi sistema operativo da un gestore di archivi adatto che supporti sia il formato del file che l’algoritmo di compressione usato. In alternativa potrebbe essere convertito in somefiles.exe che si autoestrae su una macchina con Microsoft Windows senza il bisogno di quel gestore di archivi adatto. Non si autoestrae sotto Linux, ma può essere aperto con un gestore di archivi Linux adatto.
Ci sono diversi formati di file di archivio funzionalmente equivalenti ma incompatibili, inclusi ZIP, RAR, 7z e molti altri. Alcuni programmi possono gestire (creare, estrarre o modificare) solo un tipo di archivio, mentre molti altri possono gestire più formati. C’è inoltre una distinzione tra il formato di file e l’algoritmo di compressione utilizzato. Un singolo formato di file, come 7z, può supportare diversi algoritmi di compressione tra cui LZMA, LZMA2, PPMd e BZip2. Affinché un’utilità di decompressione espanda correttamente un archivio di tipo autoestraente o standard, deve essere in grado di operare sia sul formato del file che sull’algoritmo usato. L’esatto codice eseguibile posto all’inizio di un archivio autoestraente potrebbe quindi dover variare a seconda delle opzioni utilizzate per creare l’archivio. Le routine di decompressione saranno diverse per un archivio LZMA 7z rispetto a un archivio LZMA2 7z, per esempio.
Diversi programmi possono creare archivi autoestraenti. Per Windows ci sono WinZip, WinRAR, 7-Zip, WinUHA, KGB Archiver, Make SFX, il wizard integrato in IExpress e molti altri, alcuni sperimentali. Per Macintosh ci sono StuffIt, The Unarchiver e 7zX. Ci sono anche programmi che creano archivi autoestraenti su Unix come script di shell che utilizzano programmi come tar e gzip (che devono essere presenti nel sistema di destinazione). Altri (come 7-Zip o RAR) possono creare archivi autoestraenti come normali eseguibili in formato ELF. Un primo esempio di archivio autoestraente era l’archivio shar di Unix in cui uno o più file di testo erano combinati in uno script di shell che quando veniva eseguito ricreava i file originali.
Gli archivi autoestraenti possono essere usati per archiviare qualsiasi numero di dati così come file eseguibili. Devono essere distinti dalla compressione degli eseguibili, dove il file eseguibile contiene un solo eseguibile e l’esecuzione del file non ha come risultato che il file non compresso venga memorizzato sul disco, ma che il suo codice venga eseguito in memoria dopo la decompressione.
.