7-Zip website: 7-zip.org
中文文档: README.zh-CN.md
This repository is a fork of 7-Zip with several Windows-focused enhancements on top of the upstream codebase.
The source tree mainly includes:
CPP/7zip/: main C++ implementation and Windows application codeC/: low-level codec and utility codeAsm/: hand-written assembly optimizationsDOC/: upstream documentation and format referencesLang/: localization resources
This fork adds an intelligent extract mode for Windows builds.
- Command line:
7z sx archive.7z - Behavior:
- If the archive expands to a single top-level file or folder, extract directly to the target path.
- If the archive expands to multiple top-level items, create a folder named after the archive and extract into it.
- Common multi-volume suffixes such as
.7z.001and.part01.rarare stripped from the created folder name.
- Explorer context menu:
- Adds
Smart Extract - The entry is placed below
Extract files...
- Adds
This fork adds a Windows password-book workflow backed by a bundled plugin DLL.
- Runtime files:
7zPasswordPlugins.dll7zPasswordBook.db
- Current public behavior:
- Stores passwords by archive MD5 in a local SQLite database
- Lets 7zFM manage the password book from the
Password Bookoptions page - Supports CSV import/export for password-book entries through
7zPasswordBook.csv - Preloads saved passwords for extraction and saves confirmed passwords back to the local password book
- Adds
Query Passwordto the 7zFM context menu
- Notes:
- The current public build implements local password-book lookup and storage
- The plugin extension lookup export is reserved, and the public plugin currently returns
E_NOTIMPL
This fork adds a GUI compression option that creates one archive per selected input item.
- Compress dialog:
- Adds
Separate archive for each file/folder
- Adds
- Behavior:
- When multiple files or folders are selected, the GUI creates one archive per selected item
- Reuses the chosen archive format and compression settings for each generated archive
- Resolves output name collisions by appending suffixes such as
_2,_3, and so on
This fork also ports the 7zFM name-encoding selector from Autori/7zip-codepage.
- File Manager:
- Adds
Tools -> Name Encoding - Adds an
Auto Detectmode for archive entry names - Supports
UTF-8, common OEM code pages, and common ANSI Windows code pages - Refreshes open panels after switching the selected code page
- Adds
- Auto detection:
- Uses the integrated
compact_enc_detlibrary to detect archive entry name encodings automatically - Applies to formats that route through the name code-page detection path, including ZIP and TAR
- Falls back to internal heuristics when the detector cannot produce a usable result
- Uses the integrated
- Command line:
- Supports
-mcp=autofor automatic archive entry name encoding detection on formats that support thecpproperty - The
cpproperty also acceptsUTF-8,WIN,DOS, and numeric code page ids - Example:
7z x archive.zip -mcp=auto
- Supports
- Runtime behavior:
- Stores the selected code page or the
automode in theZ7_FORCE_CODECenvironment variable - Applies the selected code page when opening archives in 7zFM
- Keeps the setting only for the current 7zFM process unless
Z7_FORCE_CODECis set outside the app
- Stores the selected code page or the
This repository vendors Google's compact_enc_det library for archive entry name auto-detection.
- License: Apache License 2.0
- Source license text:
CPP/Common/CompactEncDet/LICENSE - Third-party notice summary:
THIRD_PARTY_NOTICES.txt - The imported
compact_enc_detsource tree contains local modifications for integration and compiler compatibility
The NSIS script decompile build and release automation also references the approach used by myfreeer/7z-build-nsis.
- Referenced files in this repository:
- Upstream project license: LGPL-2.1
- Upstream repository: https://github.com/myfreeer/7z-build-nsis
- This repository reimplements the CI flow in PowerShell and GitHub Actions around the same NSIS script decompile enablement idea
Windows builds are published through a manual GitHub Release workflow.
- Runner:
windows-2022 - Toolchain: Visual Studio 2022 +
nmake - Targets:
x64,x86 - Release asset types:
- Windows installer executables for
x64andx86 all-products.zip: all produced.exe,.dll,.sfx, language files, andLicenses/documentation in one archive for inspection, download, or redistribution
- Windows installer executables for
- Asset naming:
- Normal release assets are named like
7zip-v26.04-windows-all-products.zip - NSIS-enabled release assets are named like
7zip-v26.04-nsis-windows-all-products.zip
- Normal release assets are named like
Windows release packaging is defined in .github/workflows/release-windows.yml.
- Trigger: manual
workflow_dispatch - Input:
version_tag, which must be exactlyv<major>.<minor>, for examplev26.04 - Behavior:
- Runs both asset flavors (
standardandnsis) as parallel jobs from a single run - Builds
x64andx86Windows binaries - Downloads the matching upstream 7-Zip installer skeleton based on the leading
v<major>.<minor>portion of the tag - Replaces the packaged binaries, language files from
Lang/, and selected distribution documents fromDOC/ - Publishes one GitHub pre-release whose tag is exactly
version_tag, for examplev26.04
- Runs both asset flavors (
- NSIS flavor notes:
- Applies a temporary build patch that enables
NSIS_SCRIPTinCPP/7zip/Archive/Nsis/NsisIn.h - Removes
-WXfromCPP/Build.makduring CI so NSIS script decompile warnings do not fail the build - Packages NSIS-enabled installer and zip assets with the
-nsis-infix in the asset name - To verify the feature, test the built
7z.exeor7zFM.exeagainst a real NSIS installer and confirm that[NSIS].nsiis listed or extracted
- Applies a temporary build patch that enables
- Installer payload notes:
- Includes
Uninstall.exe - Includes
7zPasswordPlugins.dll, and the bundled uninstaller removes it during uninstall - Does not install
Install.exe - Does not install
7zS.sfx
- Includes