- 桌面应用
【免费下载链接】PeaZip
Free Zip / Unzip software and Rar file extractor. Cross-platform file and archive manager. Features volume spanning, compression, authenticated encryption. Supports 7Z, 7-Zip sfx, ACE, ARJ, Brotli, BZ2, CAB, CHM, CPIO, DEB, GZ, ISO, JAR, LHA/LZH, NSIS, OOo, PAQ/LPAQ, PEA, QUAD, RAR, RPM, split, TAR, Z, ZIP, ZIPX, Zstandard.
PeaZip 是一款面向 BSD、Linux、macOS 与 Windows 的免费开源归档管理器,本文基于仓库 README.md 及其配套源码目录 peazip-sources/,系统梳理其功能矩阵(200+ 归档格式、跨平台原生支持、安全特性)、源码目录结构与构建发布流程(Portable/安装包),并给出文件管理器、命令行脚本、安全与许可等关键机制的源码级佐证。读完本文,你将能够理解 PeaZip 的整体能力边界,并掌握从源码构建、打包到部署的完整路径。
项目定位与核心特性
PeaZip 是一个跨平台的免费归档管理器,为 BSD、Linux、macOS 和 Windows 提供开源替代方案,可替代 WinZip、WinRar 等专有软件,同时提供无需安装的便携(Portable)版本。其核心定位可以从三个层面概括:
- 格式覆盖广:支持 200+ 种归档类型与变体(7z、ace、arc、brotli、bz2、cab、gz、iso、pea、rar、tar、wim、zip、zipx、zpaq、zstandard 等),并处理分卷归档(001、r01、z01…)。
- 功能不止于压缩:可转换现有归档、拆分/合并文件、编辑注释、在归档中搜索、向独立归档添加文件。
- 安全性强:支持多种归档加密标准,提供文件哈希工具,并可将 GUI 任务导出为 CLI 脚本。
此外,PeaZip 还内置了一个能力不俗的文件管理器:书签、搜索、即时内容过滤、重复文件检测,以及集成的文本、十六进制和图像查看器。
跨平台与原生应用支持
PeaZip 以原生应用形式运行于多个平台,详见 README.md 的 Features 一节:
- BSD(x86-64)
- Linux(x86-64 与 aarch64)
- macOS/Darwin(Intel x86-64 与 aarch64,例如 Mx Apple Silicon SoC 家族)
- Windows/Win64(x86 与 x86-64),并兼容 Wine/ReactOS
Linux 发行说明 dev/readme_Linux.txt 进一步指出,预构建包面向 aarch64 和 x86_64,针对 GTK2 与 Qt6 widgetset(另有用于评估调试的实验性 GTK3-alpha),打包为 DEB、RPM 与免安装的 Portable 包;同时 PeaZip 也通过 Flatpak 分发(Qt6,aarch64 与 x86_64 双架构)。
强大的压缩与格式后端
PeaZip 本身是图形化前端,实际压缩能力依赖多个开源技术后端。仓库源码说明 dev/readme.txt(THIRD PARTIES 一节)明确列出了这些后端及其许可:
- 7z(LGPL)与p7zip(LGPL):主流格式支持,放置于
res/bin/7z;7-Zip-zstd 编解码器(LGPL)放置于res/bin/7z/Codecs(仅 Windows)。 - Brotli(MIT):放置于
res/bin/brotli。 - Zstandard(BSD/GPLv2 双许可):放置于
res/bin/zstd。 - FreeArc / ARC(GPL):放置于
res/bin/arc。 - ZPAQ/LPAQ/PAQ8*(GPL):分别放置于
res/bin/zpaq、res/bin/lpaq、res/bin/paq。 - QUAD/BALZ/BCM(LGPL / 公有领域 / Apache v2):放置于
res/bin/quad。 - strip 与 UPX(GPL):放置于
res/bin/upx(strip 仅 Windows 需要)。
需要强调的是,这些第三方二进制是平台相关的,因此不随源码包提供(但包含在程序预编译包中),构建时需按目标 OS 与 CPU 架构下载对应二进制放入 res/bin 相应子目录。仓库中每个子目录都留有place xxx binary here.txt占位说明文件,例如 res/bin/7z/place 7z binary here.txt。
可选的非自由后端
PeaZip 还可以支持以下不得包含在基础包中的二进制(因闭源或非自由许可):
- WinAce UnACE(royalty-free):可放置于
res/bin/unace作为后端,但因非自由许可不得打包。 - RarLab UnRar(royalty-free):可放置于
res/bin/unrar作为后端,同样不得打包。 - RarLab Rar.exe(shareware):可安装在同一系统上,PeaZip 可自动配置用其创建 RAR 归档,但因非自由且非 royalty-free 许可而不得打包。
用户可在主菜单Options > Settings 的 Advanced 标签页设置 PeaZip不使用非自由软件或格式;该行为也可在编译期通过project_peach.lpi中的HLIBRE_DIR常量硬编码:
0:不硬编码,从配置读取;1:硬编码为仅允许使用已知自由软件组件;2:硬编码为仅允许使用已知自由软件组件与开放归档格式(读写均不受专利限制)。
这一设计体现了 PeaZip 的“安全优先”定位:强加密、双因素认证、加密密码管理器与安全删除(见 README.md Security-focused 条目)。
仓库源码结构
PeaZip 采用 Lazarus/FreePascal 编写,Windows 安装程序使用 InnoSetup 脚本(类 Pascal 语法)。源码组织如下:
dev 目录:应用本体与引擎
dev/ 包含编译与构建 PeaZip 自身二进制所需的全部源码:
- project_peach.lpi:编译为peazip主可执行文件,即文件与归档管理器的 GUI 前端(原名 PEACH,即 PEA launcher),负责调用 PEA、7z 及其他工具。
- project_pea.lpi:编译为pea,提供 PEA 文件格式支持、文件管理工具、加密与哈希例程。
- project_demo_lib.lpi:可选的演示应用,展示如何将 PEA 源码作为库使用,仅作示例,非 PeaZip 必需。
- metadarkstyle/:zamtmn 的 metadarkstyle Lazarus 包,为 Windows 10+ 提供深色模式支持;非 Windows 平台不使用,但 Lazarus IDE 需要将该包手动加入项目或从项目依赖中移除(GUI 路径:主菜单 Project > Project Inspector)。
- dragdropfilesdll.src/:Windows 专用,编译dragdropfilesdll.dll,提供 Windows 下应用与系统间的文件拖放功能;依赖可选 Lazarus 包 DragDropLazarus 5.2 或更新版本。安全提示:PeaZip 在 Windows 启动时会通过
internaldllcheck过程校验该 DLL 的 SHA256 是否匹配硬编码白名单值,以防止 DLL Hijacking 攻击;一旦不匹配即停止运行并报错。若重编译或修改该 DLL,必须同步更新internaldllcheck中的参考哈希。 - installer/:InnoSetup 脚本,创建带文件关联与菜单/SendTo 集成的 Windows 安装程序,例如 peazip-setup_script_WIN64.iss,其中包含
[Tasks]桌面图标、[Files]安装 peazip.exe / pea.exe / dragdropfilesdll.dll 与 res 目录、[Icons]生成 "Add to archive..."、-add2archive等命令行快捷方式。 - dev 目录中的
.res文件通过 windres 编译为.rc(参见 windres_pea.bat 与 windres_peazip.bat),用于在 Windows 平台为可执行文件提供 manifest 与二进制信息(作者、版本等)。 - 加密与数学工具库单元源自 Wolfgang Ehrhardt 的 crypto library(Zlib 许可,例如 aes、crc_hash、fca、serpent、tf、util 系列),并已打补丁支持 aarch64 构建——这一事实可以从 dev/ 下大量
aes_*.pas、sha*.pas、crc*.pas等单元文件得到印证。
res 目录:运行资源与分发素材
res/ 包含运行 PeaZip 所需资源与便携/可安装应用部署素材,核心子目录如下:
- res/conf/:配置文件目录,存放 conf.txt 及用户自建的自定义脚本、压缩设置与归档布局(详见下文配置一节)。
- res/bin/:架构相关二进制目录,存放第三方后端(7z、arc、brotli、zpaq、zstd 等),构建时需要自行放入对应平台二进制。
- res/share/:非架构相关数据目录,可原样用于所有系统与包类型,包含:
batch/:命令行脚本示例与系统集成素材(详见下文);copying/:项目 LGPLv3 许可证 copying.txt 与第三方许可;icons/:.ico/.png 图标(更多 png 见 batch/freedesktop_integration);lang/:应用文本的多语言翻译;lang-wincontext/:唯一仅面向 Windows的 res 目录,含本地化 Windows 右键菜单的 .reg 文件;presets/:预置压缩设置文件(可编辑,但用户自定义设置应存入配置目录);readme/:面向 Windows 与 Linux 用户的系统相关说明;themes/:主题文件,以.theme.7z形式提供图形资源与 UTF-8 带 BOM 的主题选项文件。- 根目录应包含(或链接)
peazip_help.pdf以提供离线帮助。
- res/portable:一个空文件,作为便携模式的标记。
ShellEx:Windows 11 迷你上下文菜单支持
仓库根目录另有一个 PeaZip.ShellEx/ 子项目(由用户 Umoxfo 提供代码),用于生成带Windows 11 迷你上下文菜单支持的 PeaZip 应用包:将 PeaZip 便携包放入仓库根input目录,用 Visual Studio 2022+ 打开 PeaZip.ShellEx.sln,按 MSIX 打包流程(应用项目为 PeaZip.Package)生成应用包。
从源码构建 PeaZip(Quick Start)
dev/readme.txt 提供了完整的快速构建指南,核心步骤可归纳为六步:
1) 安装 Lazarus IDE:从 lazarus-ide.org 安装 Lazarus。
2) 编译与构建:先向原版 Lazarus 添加附加包:
lazbuild --add-package (peazip sources)/dev/metadarkstyle/metadarkstyle.lpk lazbuild --add-package (peazip sources)/dev/dragdropfilesdll/DragDropLazarus.lpk # 仅 Windows 构建 dragdropfilesdll.dll 需要随后构建项目:
lazbuild (peazip sources)/dev/project_peach.lpi lazbuild (peazip sources)/dev/project_pea.lpi lazbuild (peazip sources)/dev/dragdropfilesdll/dragdropfilesdll.lpi # 仅 Windows注意:lazbuild可替换为完整路径(Windows 通常为C:\lazarus\lazbuild.exe);Linux 上 Lazarus 默认构建 GTK2 widgetset,可用--widgetset=指定其他 widgetset,例如lazbuild --widgetset=qt6 project_peach.lpi针对 Qt6 库编译。也可以在 IDE 中通过Project > Project Options > Configuration and Target设置目标 OS(Linux、Darwin/macOS、Windows…)、widgetset(GTK、Qt、win32、cocoa…)与 CPU 架构(x86、x86_64、AARCH64…),或用Run > Build all手动编译。
若出现未解析依赖错误,可通过主菜单Package > Add package file (.lpk)添加依赖,或在Project Inspector中移除(如移除 MetaDarkStyle),详见 readme.txt 的 "HINT: HOW TO ADD OR REMOVE PACKAGE (.LPK) DEPENDENCIES" 一节。
3) 移动二进制:将pea、peazip二进制(Windows 再加 dragdropfilesdll.dll)放到 (peazip sources) 根目录;此后不再需要 dev 目录。
4) 添加第三方二进制:下载目标 OS/CPU 架构对应的第三方二进制(7z、brotli、zpaq、zstandard…),放入 res/bin 对应子目录(如res/bin/7z);res/share 目录已包含全部所需非二进制资源,无需额外操作。
5) 便携包即就绪:此时得到可用的 PeaZip Portable 包,配置保存在res/conf目录,可直接压缩整个根目录迁移应用与配置。
6) 创建可安装包(可选):删除res/portable空文件后,PeaZip 将把配置写入宿主系统用户目录(如 *x 系系统的$XDG_CONFIG_HOME);随后把应用根目录放入安装包,由安装程序复制到目标位置(多数 Linux 发行版为/usr/lib)。
包命名与目录布局约定
- 命名约定为
name-version.architecture(DEB 例外,采用 Debian 命名name_version_architecture);version 字段先为x.y.z版本号,再为目标 OS(LINUX、WINDOWS、WIN64),Linux 上还需声明 widgetset(如 GTK2、Qt6)与发布号(通常 -1);architecture 在 Linux 声明目标架构(Debian 用 amd64 替代 x86_64),Windows 省略。 - 便携包目录应包含:
pea/peazip二进制、res/(按类型分组的资源)、res/portable空文件、res/bin(架构相关二进制)、res/share(非架构相关数据)、res/conf(配置文件)。 - 安装包基于便携包构建:1) 移除
res/portable文件,使配置写入用户目录($XDG_CONFIG_HOME/peazip或$HOME/.config/peazip,遵循 Open Desktop 标准);2) 按目标系统文件系统标准放置资源,例如 Linux 包中(peazip)写入/usr/lib/peazip,res/bin保持目录而res/share链接到/usr/share/peazip。推荐用符号链接复用系统已有二进制(如将res/bin/7z/7z链接到/usr/bin/7z),避免系统存在需单独更新的第二份二进制;该机制也可用于重定向配置目录。3) Windows 包需将按 peazip-setup_script_WIN*-configure.iss 编译的 "Configure peazip.exe" 放入res/bin。 peazip-x.y.z.pack.zip提供当前版本 DEB/RPM 包目录结构示例,帮助开发者针对不同包管理器组装发行包(无需编译源码)。
配置文件详解
便携模式下配置保存在 res/conf/conf.txt,安装模式下写入用户配置目录。该文件以[键]+ 值的形式记录了大量运行时选项,以下是可对照 GUI 设置理解的关键配置项:
- 主题与外观:
themes\main-embedded\theme.txt指定主题、$00FF9933等颜色值、clWindow/clAppWorkspace等 VCL 颜色常量。 - 语言:
[language]指定语言文件(如default.txt)与序号。 - 默认格式与压缩级别:
[default archiving format](18)、[default 7z compression level](2)、[default 7z compression method](LZMA2)、[default zip compression level](2)、[default zip compression method](Deflate)、[default zpaq compression level]、[default Brotli compression level](3)、[default Zstd compression level](2)等。 - 加密相关:
[encryption algorithm for ARC 0 AES 1 Serpent 2 Twofish 3 Blowfish]、[encryption algorithm for ZIP 0 AES 1 ZipCrypto (legacy)]、[encrypt also filenames, if the feature is supported by the format]、[privacy_mode directive 0 = none 1 = ask for password or keyfile when application starts, skippable 2 = non skippable]、[keep password for current session]。 - 任务窗口行为:
[0: always keep open task window for inspection of reports 1: (default) keep open only for errors, list, test operations 2: keep open only for errors, list 3: never keep open for inspection](默认值 2 的注释即写在键名中,是理解该键取值语义的绝佳示例)。 - 哈希/校验:
[preferred checksum and hash algorithms]默认CRC32 CRC64 MD5 RIPEMD160 SHA1 BLAKE2S SHA256 SHA3_256;[default checksum/hash algorithm for the file browser](4)。 - 删除策略:
[default deletion mode for delete after extraction / delete after archiving option: 0 recycle (Windows) 1 quick 2 zero 3 secure]。 - 自由软件合规:
[Free Software compliance 0 = permissive (default) 1 = allow only Free Software components 2 = allow only Free Software components and open archive formats; 1 and 2 modes can be hardcoded at compile time],与前述HLIBRE_DIR编译常量对应。 - 文件浏览器:
[archive browser speed optimization]、[show hidden files and folders in the filesystem]、[smart file name sorting]、[middle mouse button click action]、[always start file browser from ...]等。
这些配置项与 GUI 的 Options > Settings 面板一一对应,修改后重启或重新加载布局即生效;自定义压缩设置与用户脚本应保存在配置目录中(而非 res/share/presets),这与 PeaZip 的设计行为保持一致。
命令行与系统集成
PeaZip 可被脚本调用,也提供多种桌面集成方式,样例均位于 res/share/batch/:
- Windows bat 脚本(
bat/目录,24 个):如 Add to archive、Extract、Test、Convert 等。 - *Linux/x sh 脚本(
sh/目录,24 个):例如 Add to zip.sh 内容为:
"$(dirname "${BASH_SOURCE[0]}")/../../../../peazip" -add2zip %F即通过-add2zip参数调用 peazip 可执行文件,将传入文件%F添加到 zip。同类脚本还覆盖-add2archive(通用)、-add27z、-add2brotli、-add2pea、-add2tar、-add2zpaq、-add2zstd等,以及 Extract/Convert/Test/Set comment/Open as archive 等操作,并可执行peazip-reset.sh重置配置。
- freedesktop_integration/(81 个文件):面向 Gnome、KDE 等符合 freedesktop 标准的桌面环境,含 .desktop 文件、Nautilus 脚本、Nemo actions、KDE service menus 等(各有独立 readme,例如 readme_add_peazip_to_gnome_context_menu.txt)。
- macOS service menus/(36 个文件):Automator 工作流,将 PeaZip 集成进 macOS 右键菜单。
- Windows/(88 个文件):SendTo 菜单快捷方式、Windows 11 迷你上下文菜单的 .reg 脚本,以及 windows-system-wide-hotkey.txt 帮助文件。
- 各目录均有说明文件,如 readme-batch.txt 概述目录用途:1) 从命令行脚本使用 PeaZip;2) 与宿主系统集成。
安装与运行(Linux / Windows / macOS)
Linux
- 预构建包见 dev/readme_Linux.txt:DEB、RPM 与 Portable 包,覆盖 aarch64/x86_64、GTK2/Qt6 widgetset;预构建包不覆盖所有架构/widgetset/包格式组合,也不针对特定发行版,因此建议优先使用发行版仓库中的安装包,缺失或过旧时可向维护者请求收录。
- Qt6 版本:部分机器运行 Qt 版 PeaZip 需要
libQt6Pas.so,应安装到/usr/local/lib或等效目录(如/usr/lib),可用发行版工具安装或手动复制后运行ldconfig。 - Flatpak:
io.github.peazip.PeaZip(Qt6,aarch64 与 x86_64)。 - 系统集成:参考 freedesktop_integration/ 下的 .desktop 样例与 readme。
- 提示:在控制台直接运行
peazip二进制可获得更多故障反馈(如缺失依赖)。
Windows
- 安装包由 InnoSetup 脚本构建(如 peazip-setup_script_WIN64.iss),提供文件关联、开始菜单与 SendTo 集成,并安装
dragdropfilesdll.dll以支持系统级拖放;兼容 Wine/ReactOS。 - 右键菜单本地化:使用 res/share/lang-wincontext/ 下的 .reg 文件。
macOS
- 提供 Darwin 原生包(Intel x86_64 与 aarch64),macOS 右键菜单通过 macOS service menus/ 中的 Automator 工作流集成。
许可与第三方致谢
- PeaZip 采用LGPLv3许可,许可证文本见 res/share/copying/copying.txt。
- 加密与数学库单元源自 Wolfgang Ehrhardt 的 crypto library(Zlib 许可),已打补丁以支持 aarch64。
- 第三方二进制(7z/p7zip、FreeArc、PAQ/ZPAQ、Brotli、Zstd、UPX 等)版权归各自作者,各自许可文本收录于 res/share/copying/third-parties/(如 7z License.txt、brotli note.txt、zstd note.txt、zpaqfranz-license.txt 等)。
- GUI 中部分图标灵感来自 Tango Desktop Project、Crystal/Crystal Clear 与 NuoveXT(Creative Commons Attribution Share-Alike 与 LGPL 许可)。
版本快照与更多资料
- 最新源码位于仓库 peazip-sources/;每个
x.y.z版本还以peazip-x.y.z.src.zip源码快照形式发布。 - 源码包内 dev/readme.txt 是编译与打包的权威指南(含详细版 DETAILED GUIDE 与 .lpk 依赖管理提示);README.md 与 README.zh.md 提供功能概览与中文速览。
- 主题、翻译、FAQ、基准测试、截图等资料通过 README 的 Useful Links 指向项目官网相应页面(见 README.md)。
综上,PeaZip 以「跨平台原生前端 + 多开源后端」架构实现了 200+ 归档格式与完整文件管理能力,其源码仓库同时承载了 Portable/安装包的完整构建链路与丰富的系统集成样例,开发者既可开箱即用,也可按本文所述流程从源码定制自己的发行包。
- 桌面应用
【免费下载链接】PeaZip
Free Zip / Unzip software and Rar file extractor. Cross-platform file and archive manager. Features volume spanning, compression, authenticated encryption. Supports 7Z, 7-Zip sfx, ACE, ARJ, Brotli, BZ2, CAB, CHM, CPIO, DEB, GZ, ISO, JAR, LHA/LZH, NSIS, OOo, PAQ/LPAQ, PEA, QUAD, RAR, RPM, split, TAR, Z, ZIP, ZIPX, Zstandard.
相关推荐
PeaZip源代码编译指南:从零开始构建跨平台压缩工具
PeaZip源代码编译指南:从零开始构建跨平台压缩工具 PeaZip是一款功能强大的开源压缩软件,支持7Z、ZIP、RAR等200多种格式,提供跨平台的文件和归
桌面应用【亲测免费】 推荐开源利器:PeaZip - 免费的跨平台文件压缩与解压工具
推荐开源利器:PeaZip 免费的跨平台文件压缩与解压工具 项目介绍 PeaZip是一款强大的免费档案管理器,适用于Linux、macOS和Windows操作系
桌面应用PeaZip:免费开源的跨平台压缩软件终极指南
PeaZip:免费开源的跨平台压缩软件终极指南 您是否正在寻找一款功能强大且完全免费的压缩软件?PeaZip 正是您需要的完美解决方案!这款开源压缩工具不仅支持
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考