3 分钟上手 lessmsi:不装软件也能完成 MSI 安装包提取与深度解析
2026/9/7 1:45:13 网站建设 项目流程

3 分钟上手 lessmsi:不装软件也能完成 MSI 安装包提取与深度解析

【免费下载链接】lessmsiA tool to view and extract the contents of an Windows Installer (.msi) file.项目地址: https://gitcode.com/gh_mirrors/le/lessmsi

周一早上,运维小陈对着三个安装包犯了难:一个系统补丁、一个开发工具、还有一个版本不明的旧驱动。他真正想要的,只是里面某个几百 KB 的配置文件,却不得不把整个软件完整装一遍才能拿到——直到他遇见了 lessmsi。这是一款专门用于查看和提取 Windows Installer(.msi)文件内容的开源工具,安装包提取从此不必先"安装",看结构、挑文件、导出来,三步就能走完。

它到底是干什么的:一个能"拆包"的 Windows 安装包解析工具

MSI 文件看起来是个黑盒,其实内部大有乾坤:它既装着真正的文件流,也藏着一张张记录组件、文件、注册表项、快捷方式等信息的数据库表。lessmsi 干的事情,就是把这层外壳掀开,让你像翻压缩包一样查看里面的每一件"货物"。

  • 双入口设计:图形界面(GUI)负责"看得懂",命令行(CLI)负责"跑得快";
  • 免安装运行:拿到程序本体直接打开就能用,不会往系统里塞任何组件;
  • 按需挑选:不必全量导出,勾选或指定文件名即可;
  • 结构透视:能直接查看 MSI 内部数据库表与摘要元数据,适合研究安装逻辑的人。

项目源码按职责分成了三个核心模块,想深入研究的读者可以按图索骥:命令行入口在src/LessMsi.Cli/,图形界面在src/LessMsi.Gui/,而真正负责解析 MSI 数据库、处理 CAB 压缩的核心引擎位于src/LessMsi.Core/,它依赖lib/目录下的wix.dllwixcab.dll完成底层工作。

三条上手路径怎么选:先看对比,再动手

路径适合谁上手成本一句话总结
命令行脚本爱好者、批量处理场景一条命令,全量或按名提取
图形界面普通用户、想先预览再提取最低点几下鼠标,内容一目了然
右键菜单高频日常使用者最低资源管理器里直达提取

三条路互不冲突,可以同时启用。下面逐个展开,每一节都是一条可立刻照做的完整流程。

路径一:命令行模式,一条命令完成 MSI 安装包提取

先获得工具本体。可以从 release 页面下载免安装压缩包,解压即用;习惯命令行包管理器的用户也能通过 Chocolatey 一键安装。想自己编译或阅读源码的话,克隆仓库即可:

git clone https://gitcode.com/gh_mirrors/le/lessmsi

拿到程序后,最基础的提取只需一条命令:

lessmsi x D:\packages\setup.msi D:\extracted

x表示按原始目录结构提取。如果你省略输出目录,程序会在当前路径下自动生成一个与安装包同名的文件夹,把内容放进去。

只想要其中某几个文件?在命令末尾把文件名依次追加即可:

lessmsi x setup.msi D:\extracted readme.txt logo.ico

提取模式还有几个实用的变体,解决"重名""覆盖"这类常见诉求:

命令行为说明
lessmsi x保留目录结构提取,遇到已存在文件会跳过
lessmsi xo保留目录结构,遇到同名文件直接覆盖
lessmsi xfo所有文件平铺到同一目录,同名直接覆盖
lessmsi xfr平铺提取,同名文件自动追加序号,谁都不丢

除了提取,命令行还能让你"隔空看表"——把 MSI 内部某个数据库表整张导出成 CSV:

lessmsi l -t Component setup.msi

Component换成PropertyFile等表名即可切换视角,配合lessmsi h(帮助)、lessmsi v(版本)、lessmsi o(打开图形界面)就能凑齐一套完整的命令行工具箱。

路径二:图形界面模式,把安装包内部看得明明白白

不敲命令也没关系。双击运行 lessmsi,从菜单里打开目标 MSI 文件,主窗口会按三个标签页把安装包拆给你看。

Files 标签是日常用得最多的地方:一张表格列出包内所有文件的名称、目录、大小和版本,想提取哪些就勾选哪些,还有"全选/取消全选"按钮,最后点一下 Extract 选好输出目录即可,所见即所得。

Table View 标签面向想研究安装逻辑的人:MSI 本质是关系型数据库,这里可以切换查看不同数据表,比如组件表里每个组件的名称与唯一标识(ComponentId),帮你梳理组件间的依赖关系。

Summary 标签则展示安装包的"身份证":标题、作者、关键词、代码页等摘要属性一应俱全,判断一个陌生安装包是谁做的、是什么版本,来这里看一眼最快。

路径三:资源管理器右键,提取只需一次点击

如果提取 MSI 文件是你每周都要重复的动作,那一定要开这个开关:在 lessmsi 的编辑菜单里进入 Preferences,勾选"在资源管理器右键菜单添加提取项"。设置完成后,回到资源管理器,对着任意 .msi 文件点右键,菜单里就多出一项"Extract Files",选个目标文件夹,内容当场提取完毕,全程不用打开任何程序窗口。

这个开关同样可以在偏好设置里一键关闭,随时反悔,互不干扰。

进阶玩法:补丁解析、外部 CAB 与批处理自动化

只会基本提取还不够,lessmsi 的几个隐藏技能值得一试:

  • MSP 补丁也能读:微软的补丁文件(.msp)同样是 Windows Installer 体系的一部分,lessmsi 同样支持查看和提取,做补丁分析时会很有用;
  • 外部 CAB 不慌:有些安装包把主体文件放在外置的 .cab 压缩包里(比如项目测试用例里的msi_with_external_cab.msimsi_with_external_cab.cab),lessmsi 能联动处理,不会因为文件"分家"而罢工;
  • 批量提取自动化:把多个安装包交给一段批处理循环,一次跑完:
@echo off setlocal enabledelayedexpansion for %%f in (packages\*.msi) do ( echo 正在解包: %%f lessmsi x "%%f" "out\%%~nf" ) echo 全部安装包提取完成,输出位于 out 目录。 pause

避坑清单:新手最容易踩的 6 个坑

  1. 路径含空格记得加引号:Windows 路径经常带空格,命令行里不包引号会直接报错;
  2. 扁平化提取的重名问题xfoxfr都把所有文件平铺到一个目录,同名文件前者直接覆盖、后者自动加序号,按需选用;
  3. 保留的权限与只读属性:提取出来的文件会保持原始属性,覆盖前注意目标是否只读,必要时先处理权限;
  4. 先列后取更省事:面对大型安装包,先用lessmsi l -t File之类的命令看清清单,再按名提取,避免一次性导出大量用不上的文件;
  5. 系统文件替换前先备份:从安装包恢复系统文件属于高危操作,务必先做备份、核对版本再动手;
  6. 来源要可信:只对可信来源的安装包做提取,提取产物建议顺手过一遍安全扫描。

常见疑问速答:一次说清

Q:lessmsi 支持哪些 Windows 版本?A:项目基于 .NET Framework 4.8 构建,覆盖微软仍在官方维护周期内的系统,一般以 Windows 10 及以上版本为准。

Q:必须安装才能用吗?A:不用。它自己就是"免安装"工具,下载解压即用,这也是它最大的卖点之一。

Q:MSP 补丁文件能提取吗?A:能。lessmsi 对 .msp 补丁同样提供查看与提取支持,项目测试集里就包含了多种补丁样例。

Q:大型 MSI 会不会把内存吃满?A:它采用流式处理,大文件的内存占用整体可控;若仍感觉卡顿,建议关闭无关程序、分批提取。

Q:提取后文件的权限会变化吗?A:会尽量保持原始权限设置,如需调整,可在提取后借助 Windows 自带权限工具修改。

写在最后:什么时候你该想起 lessmsi

需要恢复某个损坏的系统文件、想从第三方安装包里"顺"出几个库文件、要分析一个陌生安装包的结构与依赖、或者只是懒得为了一个配置去完整装一遍软件——这些时刻,就是 lessmsi 该出场的时候。它免费、开源、免安装,命令行与图形界面任选,右键菜单还能把提取变成肌肉记忆。

去克隆一份源码,或者直接下载现成版本,找手边一个 .msi 文件试一次完整的安装包提取流程,你会发现:Windows 安装包,真的没那么神秘。

【免费下载链接】lessmsiA tool to view and extract the contents of an Windows Installer (.msi) file.项目地址: https://gitcode.com/gh_mirrors/le/lessmsi

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询