news 2026/10/4 1:56:55

PeaZip 免费压缩管理器:跨平台开源归档工具的功能矩阵、源码结构与构建指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PeaZip 免费压缩管理器:跨平台开源归档工具的功能矩阵、源码结构与构建指南
  • 桌面应用

【免费下载链接】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.

项目地址:https://gitcode.com/gh_mirrors/pe/PeaZip
点击查看免费下载

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.

项目地址:https://gitcode.com/gh_mirrors/pe/PeaZip
点击查看免费下载

相关推荐

上一篇:CoreUI React图标库全面解析:CoreUI Icons与自定义图标
下一篇:QtScrcpy终极指南:如何用电脑完美控制安卓手机屏幕

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 1:56:01

接口自动化测试登录态保持:Cookie与Session绕过验证码实战

做接口自动化测试这些年,我踩过最大的坑之一,就是登录态维护。自动化脚本跑到一半,突然返回“未登录”或者“验证码错误”,整个人都麻了。尤其是在测试环境有登录验证码、又要批量跑接口用例的场景下,如果每次执行都靠…

作者头像 李华
网站建设 2026/10/4 1:56:01

Mall4j Nginx 配置实战:管理后台静态托管与后端接口反向代理完整指南

电商后端前端移动开发 【免费下载链接】mall4j ⭐️⭐️⭐️ 电商商城 小程序电商商城系统 PC商城 H5商城 APP商城 Java商城 O2O商城 跨境商城 项目地址: https://gitcode.com/gh_mirrors/ma/mall4j 点击查看 免费下载 本文聚焦 Mall4j 电商系统部署中最容易踩坑的…

作者头像 李华
网站建设 2026/10/4 1:55:18

ponytail插件与skill实战:如何用收拢型工具优化工作流

1. 从"ponytail"这个热词说起:它到底是什么第一次看到"ponytail"这个词被当成技术关键词来搜,我其实愣了一下。Ponytail,马尾辫,一个再日常不过的发型词,怎么就跟插件、skill这些词绑在一起了&…

作者头像 李华