如何轻松查看并提取 MSI 安装包内容?lessmsi 完整上手攻略
2026/8/17 20:55:10 网站建设 项目流程

如何轻松查看并提取 MSI 安装包内容?lessmsi 完整上手攻略

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

MSI 文件在很多人眼里是个"黑箱":双击它只会启动安装向导,可里面的文件到底长什么样、某个 DLL 放在了哪个目录,你完全看不到。lessmsi 正是一款专门解决这个问题的开源工具——它可以让你像打开压缩包一样查看和提取 Windows Installer(.msi)文件的内容,支持图形界面与命令行两种操作方式,无需安装任何组件即可直接运行。本文会从"它是什么"讲起,带你把它的核心功能全部用起来。

什么时候你会需要打开一个 MSI 文件

先别急着下载,想清楚自己是不是属于下面几类人:

  • 系统管理员:某台机器上的系统文件损坏,你手头只有当年的安装包,不想为了一个文件重装整套软件。
  • 开发者:需要分析第三方安装包内部的文件布局,判断它到底装了什么组件、依赖哪些库。
  • 普通用户:只想从安装包里取一个模板、图标或配置文件,却被安装向导挡在门外。

如果你命中任何一条,lessmsi 就是为你准备的。它的核心思路很朴素:MSI 本质上是一个结构化数据库,里面按表记录了组件、文件、目录、属性等信息,文件本体通常以 CAB 压缩格式内嵌其中。lessmsi 负责把这些"暗箱"里的东西原样摆到你面前。

先认识一下它的三个核心模块

在动手之前,花 30 秒了解它的源码结构,能让你日后遇到问题知道去哪里找答案:

  • 命令行接口src/LessMsi.Cli/):处理xlv等命令的解析与执行。
  • 图形界面src/LessMsi.Gui/):提供文件列表、表格视图、摘要信息等可视化标签页。
  • 核心引擎src/LessMsi.Core/):封装 MSI 数据库读取、CAB 解压、目录映射等底层逻辑,GUI 和 CLI 都复用它。

获取并启动:一个解压即用的便携工具

获取方式很简单,克隆仓库或直接下载发布包即可:

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

它基于 .NET Framework 开发,目标平台是 Windows 10 及更新版本(跟随微软官方支持周期)。由于是便携式工具,你不需要"安装"它——解压后运行lessmsi-gui.exe就能看到图形界面。如果你在命令行里直接输入lessmsi不带任何参数,它同样会拉起图形界面。

第一次上手:图形界面四步走完一次提取

打开 GUI 后,用 NUnit 或其他任意一个 .msi 文件试试手。整个提取流程只有四步:

  1. 点击菜单File → Open,选择目标 MSI 文件。
  2. 停留在默认的Extract Files标签页,此时文件列表已经加载完成。
  3. 勾选你需要的文件,或用底部的Select All / Unselect All按钮快速全选或清空。
  4. 点击Extract,在弹出的对话框中指定输出目录,等待进度条走完。

文件列表会展示名称、所在目录、大小和版本信息,勾选后即可选择性提取

提取时有个值得注意的细节:文件会按照 MSI 内部记录的目录结构还原,不会乱成一锅粥。这正是很多同类工具做不到的。

两个容易被忽略的隐藏标签页

很多人只用 "Extract Files" 就关掉软件,其实另外两个标签页才是"深度玩家"的地盘。

Table View(表格视图):MSI 的内部数据由一张张表组成,比如 Component 表记录每个组件的名称与唯一 ID,Property 表记录安装属性。这个视图让你直接浏览这些原始数据,理解安装包的组织方式。想分析第三方软件装了什么组件、组件之间怎么关联,这里就是答案。

Table View 按表展示 MSI 数据库内容,组件、属性一目了然

Summary(摘要):这里展示的是安装包的元数据,包括标题、作者、代码页、安装描述等信息。当你想快速确认一个安装包"是谁做的、什么版本、面向什么平台"时,切到这个标签页看几眼就够了。

Summary 标签页展示 MSI 的标题、作者、代码页等元数据

命令行玩法:把提取写进脚本

GUI 适合手工操作,命令行才是效率工具。lessmsi 的命令格式为:

lessmsi <command> [options] <msi文件> [<输出目录>] [<要提取的文件>]

它有五种提取命令,对应五种不同的"冲突处理策略",这是很多人没弄明白的地方:

命令行为适用场景
x保留目录结构提取,遇到同名文件自动改名避免覆盖日常默认选择
xo保留目录结构,同名文件直接覆盖明确要覆盖旧文件
xfo扁平化(不建子目录),同名文件覆盖只要文件不要目录
xfr扁平化,同名文件自动加序号后缀多个目录有同名文件时
l -t以 CSV 形式输出指定表的内容到屏幕查看组件、属性等表数据

下面是一组可以直接抄的示例:

# 提取全部文件,保留目录结构 lessmsi x setup.msi C:\extracted # 只提取一个文件(用文件名匹配) lessmsi x setup.msi C:\extracted readme.txt # 把同名文件全部压平到同一目录并自动改名 lessmsi xfr setup.msi C:\flat # 查看 Component 表的内容(输出 CSV) lessmsi l -t Component setup.msi

命令行下提取的进度会实时打印到终端,格式是已提取数/总数 文件名,方便你观察哪些文件处理失败。另外两个小命令也值得一提:v直接打印 MSI 的 ProductVersion 属性(即安装包版本号),o用图形界面打开指定文件——适合在脚本里顺手把 GUI 拉起来。

把提取塞进右键菜单:一键完成

每次都要打开 GUI 或敲命令还是嫌麻烦?lessmsi 可以把自己注册进 Windows 资源管理器,让"提取文件"成为 MSI 文件的右键菜单项。

启用方式很简单:打开 GUI,进入Edit → Preferences,勾选 "Add Shortcut Item to Explorer" 并确认。之后在任意 .msi 文件上右键,选择Extract Files,再挑一个目标目录,文件就自动提取过去了。

集成后,右键 MSI 文件即可直接选择 Extract Files 完成提取

需要说明的是,这个集成默认是不开启的,必须手动在偏好设置里启用;不想要了也可以在同一个对话框里移除。它适合经常跟安装包打交道的运维人员——每次少点好几下鼠标。

关于 MSP 补丁与外部 CAB 的两个真相

用多了你会遇到两个高频疑问,这里提前剧透答案:

MSP 补丁能处理吗?能。lessmsi 的测试用例里就包含SQL2008_AS.mspWPF2_32.msp等多个补丁文件,补丁内的文件同样可以被查看和提取,这对分析补丁内容、排查更新问题很有帮助。

外部 CAB 文件是怎么回事?有些 MSI 不把压缩数据内嵌,而是引用一个同目录的 .cab 文件(项目测试用例里就有msi_with_external_cab.msi与配套 cab)。这种情况 lessmsi 会去 MSI 同目录寻找对应 cab;找不到会抛出ExternalCabNotFoundException,提示你先把 cab 放到 MSI 旁边。另外,遇到需要合并的解压集(一个文件横跨多个 cab),工具也会自动拼接处理,无需你操心。

常见问题速查

Q:lessmsi 是免费的吗?是的,完全开源免费,源码就在仓库里,可以自行编译,也可以直接用发布包。

Q:提取出来的文件带原始权限吗?会保持安装包内的属性设置,如果你需要调整,提取后自行修改即可。

Q:超大的 MSI 文件会不会把内存吃爆?它的解压采用流式处理,把 cab 落到临时目录后边读边解,不需要把整个包载入内存,处理几百 MB 到 GB 级的安装包依然轻量。

Q:提取时报 "File xxx was not found in the msi"?这说明你指定的文件名和包内记录不一致,先用lessmsi l或 GUI 的文件列表核对准确名称再试。

现在就可以开始的行动清单

读完这篇文章,你已经比大多数用户更了解 lessmsi 了。别让知识停在浏览器里,按下面这几步实际跑一遍:

  1. 克隆仓库或下载发布包,双击lessmsi-gui.exe确认界面正常。
  2. 找一个手边的 .msi 文件,走一遍"打开 → 勾选 → 提取"四步流程。
  3. 用命令行执行一次lessmsi l -t Property 你的文件.msi,感受 CSV 输出的威力。
  4. 在 Preferences 里启用右键菜单集成,从此提取只差一次点击。
  5. 把常用提取命令写进一个批处理脚本,批量处理同目录下所有 MSI。

工具的价值永远在动手之后才体现。下一次再面对一个"打不开"的 MSI 安装包,希望你能想起:拆开它,只需要一行命令。

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

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

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

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

立即咨询