Simone e39129c300 ci: upgrade actions to node24-native versions, release notes from CHANGELOG
- Upgrade all GitHub Actions to node24-native major versions:
  actions/checkout@v6, setup-python@v6, upload-artifact@v7,
  download-artifact@v8, microsoft/setup-msbuild@v3,
  softprops/action-gh-release@v3
- Remove FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 env var (no longer needed)
- Release workflow now extracts the relevant CHANGELOG section as
  the GitHub Release body instead of a static message
- docs: add missing [2.2.0] changelog entry (Linux MinGW-w64 support)
2026-05-02 21:22:17 +02:00
2026-05-02 20:50:36 +02:00

Nsis7z NSIS Plugin

NSIS plugin for extracting 7z, ZIP and NSIS archives.


Available Versions

Version 7-Zip Formats Notes
19.00 7-Zip 19.00 7z, LZMA, XZ, Split Original updated version
25.01 7-Zip 25.01 7z, ZIP, LZMA, XZ, Split, NSIS With NSIS archive support
26.00 7-Zip 26.00 7z, ZIP, LZMA, XZ, Split, NSIS Recommended

Supported Architectures

Architecture Description
x86-ansi 32-bit ANSI (legacy)
x86-unicode 32-bit Unicode
amd64-unicode 64-bit Unicode

Quick Start

!addplugindir "plugins\x86-unicode"

Section
  ; Simple extraction (7z, ZIP, NSIS)
  Nsis7z::Extract "$EXEDIR\data.7z"

  ; With progress text in label
  Nsis7z::ExtractWithDetails "$EXEDIR\data.7z" "Installing %s..."

  ; With callback to show files in listbox
  GetFunctionAddress $0 MyExtractCallback
  Nsis7z::ExtractWithFileCallback "$EXEDIR\data.7z" $0
SectionEnd

Function MyExtractCallback
  Pop $0   ; completedSize
  Pop $1   ; totalSize
  Pop $2   ; fileName
  DetailPrint "$2"
FunctionEnd

Build Scripts

The repo includes a single unified build_plugin.py script that replaces the previous per-version scripts.

Build

# Recommended: 7-Zip 26.00 with auto-detected toolset
python build_plugin.py

# Select 7-Zip version (19.00 | 25.01 | 26.00)
python build_plugin.py --7zip-version 25.01

# Specific toolset (2022|2026|auto)
python build_plugin.py --toolset 2022

# Linux host path (cross-build with MinGW-w64, 26.00)
python build_plugin.py --host linux

# Print version and exit
python build_plugin.py --version

Linux notes:

  • Local Linux path currently supports --7zip-version 26.00.
  • Requires MinGW-w64 toolchains (x86_64-w64-mingw32-* and i686-w64-mingw32-*) and make.

Repository Structure

ns7zip/
├── build_plugin.py              # Unified build script (all versions)
├── rebuild_nsis7z1900-src.ps1   # Rebuilds 19.00 sources
├── 7zip-19.00/                  # 7-Zip 19.00 modified
├── 7zip-25.01/                  # 7-Zip 25.01 modified (ZIP + NSIS handler)
└── 7zip-26.00/                  # 7-Zip 26.00 modified (ZIP + NSIS handler)

Changes from Original

NSIS Archive Handler (25.01, 26.00)

Added support for extracting .exe archives created with NSIS (not present in the original plugin):

  • Archive\Nsis\NsisHandler.cpp/h
  • Archive\Nsis\NsisIn.cpp/h
  • Archive\Nsis\NsisDecode.cpp/h
  • Archive\Nsis\NsisRegister.cpp
  • Compress\BZip2Decoder.cpp/h (required by NsisDecode)
  • Compress\BZip2Crc.cpp

Bug Fixes (25.01, 26.00)

  • Divide-by-zero: added guard if (totalSize == 0) return 0 in GetPercentComplete
  • ExtractWithFileCallback: NSIS callback triggered only on filename change (avoids crash with totalSize = UINT64_MAX on first SetTotal call)

License

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

Credits

  • Igor Pavlov (7-Zip)
  • Afrow UK (Original plugin)
  • Simone (x64 support, VS2022/VS2026, ZIP, NSIS handler, ExtractWithFileCallback)

See README_IT.md for the Italian version.

S
Description
NSIS plugin for 7z, ZIP, NSIS archive extraction
Readme MIT 20 MiB
v2.3.1 Latest
2026-05-04 22:12:28 +00:00
Languages
C++ 79.7%
C 14.6%
Python 3.9%
Makefile 0.9%
Assembly 0.6%
Other 0.2%