- 桌面应用
【免费下载链接】UniExtract2
Universal Extractor 2 is a tool to extract files from any type of archive or installer.
Universal Extractor 2(简称 UniExtract2)是一款以"从任何可提取文件中提取文件"为核心目标的解包工具,其独特之处在于它不止处理.zip、.rar等标准压缩包,还覆盖应用安装程序、磁盘镜像、游戏资源包乃至多媒体文件。本文以仓库 README.md 为主线,结合 UniExtract.au3 源码与 docs/FORMATS.md 格式清单,系统讲解其核心特性、命令行用法、批处理/扫描/静默模式、密码列表、更新与卸载机制,并给出基于 AutoIt 的从源码构建方法,帮助你把它真正用起来、看懂它的底层实现。
项目定位:不止是压缩包解压器
Universal Extractor 2 是原始 UniExtract(由 Jared Breland 开发)的非官方更新与扩展版本。原始版本的开发早已停止且多年未发布更新,社区涌现出众多 fork(由志愿者维护的修改版本),而 UniExtract2 是其中功能最丰富的一个,拥有一长串增强特性。
从源码角度看,其核心工作流程清晰记录在 UniExtract.au3 的文件头注释中:
- 使用 Unix
file工具和 TrID 判断文件类型; - 使用 Exeinfo PE 和 PEiD 识别可执行文件类型;
- 解包已知的归档类型。
它与其他解压软件最大的区别在于:标准归档之外,它还支持应用安装器、磁盘镜像、游戏资源文件(game archives)和多媒体文件。完整的支持类型清单见 docs/FORMATS.md。
v2 版本的核心新特性
相较于原版,UniExtract2 引入了一系列重要增强(见 README.md):
| 新特性 | 说明 |
|---|---|
| 500+ 新增文件类型 | 相对原版最新官方版本大幅扩展支持面(FORMATS 中加粗项均为 v2 新增) |
| 批处理模式(Batch mode) | 可把多个文件加入队列批量解包 |
| 仅扫描模式(Scan only mode) | 不解包,只检测任意给定文件的类型 |
| 内置更新器(Built-in updater) | 自动检测并下载新版本及辅助工具 |
| 密码列表支持 | 对常见压缩包自动尝试passwords.txt中的密码 |
| 改进的上下文菜单与状态框 | 更完善的右键集成与状态展示 |
| 更快更好的文件分析 | 多引擎联合识别 |
| 静默模式 | 不显示任何提示,适合脚本调用 |
| 大量界面改进与对话框重设计 | — |
| 资源占用/速度优化与大量 bug 修复 | 完整变更记录见 docs/changelog.txt |
文件分析的多引擎机制
所谓"更好的文件分析",在源码中体现为多个检测器协同工作。在 UniExtract.au3 中,文件识别依次调用:
FileScan_Trid():基于 TrIDLib 的签名识别;FileScan_ExeInfo()/FileScan_Peid():针对 PE 可执行文件的加壳/打包识别(如 UPX、Aspack);FileScan_UnixFile():调用 Unixfile工具;FileScan_MediaInfo():对多媒体文件调用 MediaInfo。
多个引擎的结果汇总后,由_FiletypeGet()(UniExtract.au3)统一输出格式化的类型判定文本。正是这套多引擎机制,让它能识别出"扩展名不可靠、需要看内容特征"的众多格式。
支持的文件类型全景
docs/FORMATS.md 完整列出了 UniExtract2 支持的类型,加粗项为 v2 新增(即原版官方最新版本不支持的)。按大类划分:
压缩归档(Compressed archives)
覆盖从常见的 7-Zip(.7z、.exe、.001)、RAR(.rar、.exe、.001、.r00、.part1.rar)、ZIP(.zip、.jar、.xpi、.wz、.exe、.imz)、gzip/bzip2/xz/tar 家族,到 ALZip(.alz)、Asar(Electron 的.asar)、Chromium package(.pak)、FreeArc、KGB、LZH/LHA、LZMA/LZO/LZW/LZX、PEA、StuffIt(.sit/.sitx)、UHARC、UPX 壳(.exe/.dll)、Zoo、ZPAQ 等冷门格式,还包含 Linux 软件包.deb、.rpm和 CPIO。
应用安装器(Installers)
安装包往往是提取的难点,UniExtract2 支持包括 Inno Setup 与 GOG 安装器、InstallShield(.cab/.exe)、NSIS、Windows Installer(.cab/.exe/.msm/.msi/.msp/.msu)、Wise、WiX 在内的 20 余种安装体系,以及 PyInstaller、Spoon Installer、SymbianOS/EPOC 安装器(.sis/.sisx)等。
磁盘镜像(Disk images)
支持 ISO 9660、BIN/CUE、Nero(.nrg)、IMG、DMG,以及 v2 新增的 Android boot image、CloneCD(.ccd)、压缩 ISO(.cso)、PowerISO(.daa)、VirtualBox(.vdi)、VMware(.vmdk)、Windows Imaging Format(.wim)等。
多媒体(Multimedia)
- 动画图片(
.gif/.png):可提取动画的独立帧; - 音频文件(
.mp3/.ogg/.flac/.wma/.m4a等):可将压缩音频转换为.wav; - Flash 文件(
.swf/.exe):提取图片、音频与 Flash 组件; - 视频文件(
.avi/.mp4/.mkv/.webm/.flv/.smk等):提取所有音轨与(可选)视频轨。
游戏资源包(Game archives)
这是 v2 扩展最猛烈的领域,包括 Bethesda 的.bsa/.ba2、Godot 引擎(.exe/.pck)、KiriKiri(.xp3)、Ren'Py(.rpa)、RPG Maker(.rgssad/.rgss2a/.rgss3a/.rpgmvp等)、Unity(.assets/.unity3d)、Unreal(.pak)、Wolf RPG Editor(.wolf)等,外加 500 多种其他游戏资源格式。
文本类与其他
支持 E-Mail(.eml)、编码文件(.b64/.hqx/.uu/.uue/.xx/.xxe/.ync)、Gettext 消息目录(.mo)、CHM/HLP 帮助文件、MHT、PHAR、PDF(部分支持)、Qt Message(.qm)、SQLite 数据库(.sqlite/.sqlite3/.db)、WARC 网页归档,以及 Enigma Virtual Box、MoleBox、分卷文件(.001/.002…)和 Windows 缩略图缓存(Thumbs.ds/thumbcache_*.db)。
注:FORMATS.md 中标注
¹的格式(如 FreeArc、Bitrock Install Builder、Unity、Unreal、PDF 等)为部分支持,部分文件无法被正确解包。
仓库的 def/ 目录还保存着一批格式专属的.ini定义文件(如alz.ini、godot.ini、rpgmvp.ini、sgb.ini、sim.ini、spoon.ini、utage.ini等),配合 UniExtract.au3 中枚举的$TYPE_*常量与$aExtractionTypes数组,构成了格式路由的核心表。
命令行用法
UniExtract2 支持完整命令行操作,参数解析位于 UniExtract.au3 的_CommandLine()逻辑中。基础语法为:
UniExtract.exe "待解包文件" [目标目录|/scan] [/type=类型] [/batch] [/silent] [/close] ...| 参数 | 作用 |
|---|---|
"文件路径" | 第一个参数为要处理的文件,可多个文件(多个文件会加入批处理队列) |
目标目录 | 第二个参数指定输出目录;特殊值/sub(输出到当前目录下的子目录)与/last(输出到上次使用的目录) |
/scan | 仅扫描:只检测文件类型,不执行解包(对应 GUI 的"Scan only"模式) |
/type=arctype | 强制指定归档类型,绕过自动检测;类型名来自def/*.ini与内置类型表 |
/batch | 把文件加入批处理队列后立即退出 |
/batchclear | 清空批处理队列 |
/silent | 静默模式,不弹出任何提示 |
/nolog | 关闭日志生成 |
/nostats | 关闭使用统计上报 |
/update | 立即检查更新 |
/updatehelper//updatehelpers | 静默检查并更新辅助工具 |
/plugins | 打开插件管理对话框 |
/uninstall | 卸载(结合/removeuserdata可同时删除用户数据) |
/close | 处理完成后关闭程序 |
/help、/?、-h、--help | 显示命令行帮助 |
需要注意:当通过上下文菜单调用时,程序会默认抑制"解包后打开输出目录"的行为(UniExtract.au3)。
四种工作模式:提取、扫描、批处理、静默
提取模式(默认)
这是默认行为:自动识别类型并在目标目录解包。若启用"提取后打开输出目录"选项,解包完成后会自动打开输出文件夹。
仅扫描模式(Scan Only)
对应 GUI 中Extract/Scan单选切换(UniExtract.au3 的GUI_ScanOnly()),扫描模式下目标目录输入框会被禁用。扫描结果由_GUI_FileScan()(UniExtract.au3)以只读文本框展示多引擎识别的类型结论,可一键复制。命令行中则用/scan参数触发,同时会关闭日志(UniExtract.au3)。
批处理模式
批处理队列保存在%APPDATA%\Bioruebe\UniExtract\batch.queue(UniExtract.au3)。相关核心函数:
AddToBatch()(UniExtract.au3):把文件追加写入队列文件;_BatchRead()/_BatchSave():读写队列;_BatchEnable()(UniExtract.au3):启用批处理模式并持久化batchenabled偏好。
使用方式:通过命令行传多个文件、用/batch加入队列,或在主界面中拖放文件到队列(UniExtract.au3 注释 "Drag and drop - a total of N files were added to batch queue")。批处理模式下,每个文件处理结束后若输出目录为空会进行清理,全部完成后可自动关闭主 GUI(UniExtract.au3)。
静默模式
在 GUI 的Edit菜单勾选Silent Mode,或命令行加/silent,可抑制全部提示框(对应 UniExtract.au3 的GUI_Silent())。静默模式与批处理组合使用,即可实现无人值守的脚本化批量解包。
密码列表支持
对于受密码保护的常见压缩包(7z、RAR、DGCA 等),UniExtract2 支持密码列表自动尝试。机制位于_FindArchivePassword()(UniExtract.au3):
- 先用探测命令判断归档是否加密(如 7z 的
l -p -slt输出含Encrypted = +); - 若已加密,从密码文件逐行读取密码并逐个测试(如
7z t -p"%PASSWORD%"); - 找到正确密码后,用它完成解包。
密码文件默认路径为%APPDATA%\Bioruebe\UniExtract\passwords.txt(UniExtract.au3);若读取失败则回退到程序目录下的passwords.txt。每行一个密码,可通过 GUI 的Edit菜单中的Password项直接打开编辑(UniExtract.au3)。
上下文菜单集成
安装上下文菜单后,可在资源管理器中右键直接解包。相关配置界面由GUI_ContextMenu()(UniExtract.au3)构建,支持:
- 简单模式(Simple)与级联模式(Cascading,Windows 7 及以上可用)两种菜单样式,切换时预览图由 support/Icons/ContextMenu_Simple.png 与 support/Icons/ContextMenu_Cascading.png 提供;
- 针对不同文件类型(归档、可执行文件、媒体文件等)的菜单条目勾选;
- 可选"添加额外文件关联"并支持对所有用户生效(需管理员权限)。
注册表写入是上下文菜单启用时留下的唯一系统痕迹,这也是其"并非完全便携"的原因之一。
更新机制与 Nightly Builds
UniExtract2 内置更新器。核心逻辑为CheckUpdate()(UniExtract.au3):
- 从服务器拉取文件索引(
_UpdateGetIndex()); - 主程序(
UniExtract.exe)通过 MD5 与文件大小比对判断是否有新版——因为可执行文件无法在运行时自我覆盖,主程序更新会调用独立的 UniExtractUpdater.au3(含提权版本 UniExtractUpdater_Elevated.au3); - 辅助工具(
bin目录下的 50+ 个外部提取器)与 FFmpeg 则可直接覆盖更新。
更新触发方式:新版本发布时自动通知,或从Help菜单手动Check for Updates。更新检查间隔可在Edit菜单的 Preferences 中配置(每日/每周/每月/每年/从不/自定义)。
Nightly(开发版)更新:在 Preferences 对话框中勾选Install beta updates(对应偏好项nightlyupdates,见 UniExtract.au3),下次检查更新时将接收开发构建而不是发布版。取消勾选后,只需再更新一次即可回到最新稳定版。当前项目仍处于 beta 阶段(源码版本号为2.0.0 RC 4,见 UniExtract.au3),因此更新频率较低。
重要警告(README 特别强调):不要自行替换 UniExtract 程序目录中的任何文件,否则会破坏程序!
系统要求与兼容性
- 最低要求:Windows XP 或更新版本;
- Windows 7:发送反馈需要先启用 TLS 1.1/1.2(遵循微软的相关指南),否则反馈功能会失败;
- Windows XP:出于安全考虑,所有在线功能(更新器、反馈对话框)被禁用,且部分提取器可能无法工作;
- 从 docs/changelog.txt 可见 v2 还专门针对 Windows 11 与高 DPI 屏幕做了兼容改进。
安装、卸载与便携性
安装
从官方源下载 ZIP 后解压即用,无需安装过程。首次运行如果提示程序文件不完整,是因为源码包/精简包不包含外部提取器(见下文"从源码构建")。
卸载
README 给出了三步卸载指引:
- 若启用了上下文菜单:打开程序,选择
Edit>Context Menu Entries,取消两个enabled复选框并点击OK(对应源码GUI_ContextMenu_remove()与GUI_ContextMenu_fileassoc(0),见 UniExtract.au3); - 若程序位于无写权限目录(如
C:\Program Files)且需要清掉全部设置,在资源管理器地址栏输入%APPDATA%\Bioruebe并删除其中的UniExtract目录; - 最后删除程序目录。
命令行方式为/uninstall,结合/removeuserdata可在卸载时删除用户数据(UniExtract.au3、UniExtract.au3)。
便携性与多用户模式
UniExtract 本身完全便携,但有几个例外:
- 启用上下文菜单会写入注册表项;
- 为支持大量格式,程序捆绑了 50 多个外部提取器,其中部分可能在系统上留下痕迹——常见压缩包与安装器的提取可视为便携,其他格式则未必;
- 若把程序放在无写权限目录(如
C:\Program Files),会触发多用户模式:配置文件存储到%APPDATA%(C:\Users\用户名\AppData\Roaming\Bioruebe\UniExtract)。
配置加载逻辑ReadPrefs()(UniExtract.au3)会依次判断:优先读取当前用户的UniExtract.ini;否则测试程序目录是否可写,可写则用全局配置,不可写则复制到%APPDATA%。配置项覆盖语言、历史记录、批处理开关、日志、静默模式、夜间更新、GUI 位置记忆等数十项偏好(UniExtract.au3)。
常见问题(FAQ)
为什么市面上有很多不同的 UniExtract 版本/修改版/repack?
原作者停止开发后,世界各地许多人继续更新与改进。有的只更新内部工具,有的添加了新功能,因此各版本在支持格式和特性上差异很大。UniExtract2 是唯一"真正开源"的版本,拥有中心化仓库供所有人贡献;但它也可能无法解包其他版本能处理的文件——如果确实需要某个归档的内容而本版本失败,可以尝试其他 UniExtract 版本,或在项目内寻求支持。
UniExtract 能(重新)压缩文件吗?
不能。该工具定位就是纯提取工具,对应的压缩功能(设想中的 "UniArchive")不在开发范围内。
误报问题:为什么杀毒软件会报毒?
README.md 与 docs/ANTI-MALWARE.md 详细解释了这个问题。UniExtract 不含任何恶意代码——它是 GPLv2 开源软件,任何人可审计源码。误报主要源于以下事实:
- 捆绑 50+ 外部提取器:只要其中一个被识别为恶意,整个包就被标记;且每次更新加入新提取器都会提高误报概率;
- 内置更新器:恶意软件常做"下载文件",更新器也下载文件,行为特征相似;
- AutoIt 编写:AutoIt 历史上曾被用于编写恶意软件,不少杀软厂商图省事直接"AutoIt = 可疑";
- 白名单流程繁琐:误报申诉需针对每个厂商分别处理,且每发一个新版本都要重来。
如果你的杀毒软件报毒怎么办:向厂商提交误报报告(false positive report);把 UniExtract 程序目录加入扫描排除名单;或更换杀毒软件。下载时请务必只从官方源获取。
病毒与 SmartScreen 提示的说明
- VirusTotal 之类服务:通常会有 1~10 个引擎标记,属于上述误报现象;
- Windows SmartScreen 'Windows protected your PC':这是对"无大公司背书/用户基数小"的软件的常规提醒,尤其在新版本刚发布后常见。可放心点击
More info→Run anyway;当安装用户足够多、软件积累信誉后,该提示通常会自行消失。
从源码构建
UniExtract2 使用 AutoIt 编写,核心源文件是 UniExtract.au3(约 8000 行,编译指令见文件头部#AutoIt3Wrapper_*注释)。构建步骤:
- 下载并安装 AutoIt;
- (可选)安装 SciTE 编辑器——通过 SciTE 运行 UniExtract 还能在内置控制台获得实时日志,便于调试;
- 克隆本仓库,或下载快照解压到任意目录;
- 在 SciTE 中打开 UniExtract.au3,按
F5以调试模式运行;按F7编译可执行文件;也可用 Aut2Exe 直接编译; - 下载源码包中未包含的外部程序文件:先运行程序,当提示"程序文件不完整"时选择
No;然后进入Edit/Preferences勾选Install beta updates,等待更新通知出现(若无,用Help/Check for Updates),选择Yes完成辅助文件下载; - 若主可执行文件在更新中被覆盖,按第 4 步重新构建。
参与贡献与许可证
- 贡献:任何形式的想法、bug 报告、代码提交、文档改进都欢迎。当前特别需要多语言翻译更新——打开 lang/ 下的语言文件并补齐空字符串即可(英文与德文始终是最新版本,可作参考)。
todo.txt是原版遗留的个人开发笔记,仅供参考。 - 许可证:主程序为GPLv2(全文见 LICENSE);作者原创(非 copyleft)的代码部分可在 BSD 3-clause 条款下用于你的项目。
- 第三方组件:程序使用 TrIDLib、多个 7zip 插件及大量其他工具与库(详见 docs/helper_binaries_info.txt)。部分提取器不允许商业使用——若打算商用,务必先检查
docs目录下各第三方许可证文件与辅助二进制信息文件,可自由删除 bin 目录中许可证不符合你使用场景的文件。
结语
UniExtract2 的价值在于"广度":以 50+ 外部提取器为引擎、多签名库联合识别为大脑,把标准压缩包、安装器、镜像、游戏资源与多媒体文件统一收敛到一个提取流程中。配合批处理、仅扫描、静默、密码列表等模式,它既能当图形化右键工具,也能充当脚本化批量提取的底层组件。如果你想深入了解每种格式的具体解包调用链,可直接研读 UniExtract.au3 中$aExtractionTypes路由到的各格式分支,以及 docs/changelog.txt 中每轮迭代对具体格式的改进记录。
- 桌面应用
【免费下载链接】UniExtract2
Universal Extractor 2 is a tool to extract files from any type of archive or installer.
相关推荐
如何解锁文件提取全能力?Universal Extractor 2实战指南
如何解锁文件提取全能力?Universal Extractor 2实战指南 你是否遇到过下载的压缩包无法打开?安装程序中的资源无法提取?游戏存档无法查看内容?U
桌面应用全能文件提取工具:Universal Extractor 2 深度应用指南
全能文件提取工具:Universal Extractor 2 深度应用指南 Universal Extractor 2 作为一款专业级文件提取解决方案,具备强大
桌面应用如何高效使用STM32 Arduino核心:专业开发者的完整指南
如何高效使用STM32 Arduino核心:专业开发者的完整指南 Arduino_Core_STM32是一个开源项目,为STM32微控制器提供完整的Arduin
嵌入式固件驱动开发硬件开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考