# Nsis7z Plugin - 7-Zip 19.00

**Plugin NSIS per l'estrazione di archivi 7z**

## Informazioni

| Proprietà        | Valore                                                  |
|------------------|---------------------------------------------------------|
| Versione 7-Zip   | 19.00                                                   |
| Autore originale | Afrow UK                                                |
| Basato su        | 7-Zip by Igor Pavlov                                    |
| Modifiche        | Supporto x64, VS2022/VS2026, ExtractWithFileCallback    |

## Formati Supportati

| Formato | Estensione | Crittografia   |
|---------|------------|----------------|
| 7z      | .7z        | AES-256        |
| LZMA    | .lzma      | —              |
| XZ      | .xz        | —              |
| Split   | .001       | —              |

### Codec 7z Supportati

- LZMA / LZMA2
- PPMd
- BCJ / BCJ2 (filtri)
- Delta
- Copy

## Architetture

| Architettura    | Descrizione           |
|-----------------|-----------------------|
| x86-ansi        | 32-bit ANSI (legacy)  |
| x86-unicode     | 32-bit Unicode        |
| amd64-unicode   | 64-bit Unicode        |

## Usage

```nsis
!addplugindir "plugins\x86-unicode"

Section
  ; Extract 7z archive
  Nsis7z::ExtractWithDetails "$EXEDIR\data.7z" "Installing package %s..."
  
  ; Or simple extraction
  Nsis7z::Extract "$EXEDIR\data.7z"
SectionEnd
```

### Functions

#### Nsis7z::Extract

```nsis
Nsis7z::Extract "archive.7z"
```

Extracts the archive to `$OUTDIR` silently.

#### Nsis7z::ExtractWithDetails

```nsis
Nsis7z::ExtractWithDetails "archive.7z" "Installing %s..."
```

Extracts the archive showing progress with the specified format string.

#### Nsis7z::ExtractWithCallback

```nsis
Nsis7z::ExtractWithCallback "archive.7z" callback_function
```

Extracts with a callback that receives `completedSize` and `totalSize`.

#### Nsis7z::ExtractWithFileCallback (Nuovo)

```nsis
Nsis7z::ExtractWithFileCallback "archive.7z" callback_function
```

Extracts with a callback that receives `completedSize`, `totalSize` and `fileName`.

> Questa funzione è stata aggiunta nella versione personale.

## Compilazione

### Requisiti

- Visual Studio 2022 o 2026 con workload C++
- Python 3.x

### Build

```powershell
cd ns7zip

# VS2022
python build_plugin_vs2022.py

# VS2026
python build_plugin_vs2026.py
```

### Opzioni

```powershell
python build_plugin_vs2022.py --configs x64-unicode --verbosity minimal
```

## Ricostruzione Sorgenti

Per ricostruire i sorgenti originali da zero:

```powershell
cd ns7zip
.\rebuild_nsis7z1900-src.ps1
```

Lo script scarica 7-Zip 19.00 da 7-zip.org e unisce i file del plugin NSIS.

## License

- **7-Zip**: LGPL 2.1 + BSD 3-clause
- **Plugin NSIS**: Afrow UK

## Credits

- Igor Pavlov (7-Zip)
- Afrow UK (Plugin originale)
- Simone (Supporto x64, VS2022/VS2026, ExtractWithFileCallback)
