公众号旧文

Windows上msi和exe的安装包有什么区别?

作者:胖子阅读 —

在 Windows 世界里,软件安装主要有两种形式:

一种是 .exe 安装程序,另一种是 .msi 安装包。

比如我之前一直在写的远程控制软件 RustDesk,就提供:

图片

虽然二者都能完成安装软件这件事,但它们的定位完全不同。

简单来说:

  • EXE:普通程序形式的安装器
  • MSI:Windows 官方的标准化安装数据库

一、EXE:最常见的安装程序

.exe 是 Windows 可执行程序(Executable) 的通用格式。

也就是说,一个 .exe 文件本质上就是一个普通程序,只不过它的功能是 执行软件安装流程。

例如:

setup.exe
install.exe
chrome_installer.exe

当你双击 .exe 安装包时,实际上是运行了一个程序,这个程序会:

  1. 显示安装向导
  2. 解压文件
  3. 复制文件到系统目录
  4. 写入注册表
  5. 创建快捷方式
  6. 安装依赖组件

EXE 的最大特点是完全自由。

开发者可以随意设计安装逻辑,比如:

  • 检查系统版本
  • 下载最新组件
  • 在线安装
  • 安装多个程序
  • 自定义 UI

因此很多软件都使用 EXE 安装器,比如浏览器、游戏、驱动程序等。

但缺点也很明显:

系统很难统一管理这些安装程序。

Windows 并不知道 EXE 内部做了什么。

二、MSI:Windows 的标准安装格式

.msi 是 Microsoft Installer 的安装包格式。

它并不是一个普通程序,而是一个 数据库文件,里面记录了完整的软件安装信息,例如:

  • 需要安装哪些文件
  • 文件要复制到哪里
  • 需要创建哪些注册表
  • 需要哪些组件
  • 卸载时要删除哪些内容

真正执行安装的程序是 Windows 自带的:

msiexec.exe

当你双击 .msi 文件时,其实就是调用了:

msiexec /i program.msi

也就是说:

MSI 安装由 Windows 系统统一管理。

三、MSI 的核心优势

MSI 的设计目标是:可管理、可自动化、可维护。

因此它具备很多企业环境需要的能力。

1、统一的安装与卸载

Windows 会记录 MSI 安装的所有组件,因此可以做到:

  • 精确卸载
  • 修复安装
  • 升级软件

例如:

msiexec /x program.msi   卸载
msiexec /f program.msi   修复

2、支持静默安装

MSI 天生支持自动化部署,例如:

msiexec /i program.msi /quiet

整个安装过程不会弹出任何界面。

这在 企业批量部署电脑 时非常重要。

3、支持组策略部署

在企业 Windows 域环境中,管理员可以通过 组策略(Group Policy) 直接推送 MSI 软件。

例如:

  • 所有电脑自动安装某个软件
  • 自动升级软件版本
  • 自动卸载旧版本

EXE 通常做不到这一点。

4、支持安装修复

MSI 可以检测软件是否损坏。

如果发现某个文件被删除,Windows 可以自动修复。

这种机制叫:Self-healing(自我修复)

四、EXE 和 MSI 的核心区别

特性 EXE MSI
文件类型 可执行程序 安装数据库
执行方式 直接运行 由 msiexec 执行
灵活性 非常高 较严格
系统管理 难管理 Windows 原生管理
自动化部署 一般不支持 原生支持
企业环境 较少使用 常用
静默安装 不统一 标准化

简单理解:EXE 更自由,MSI 更规范。

五、为什么很多软件既有 EXE 又有 MSI?

很多软件都会同时提供两种安装包,例如:

software_setup.exe
software_enterprise.msi

它们面向的用户群体不同。

EXE 面向:

  • 普通个人用户
  • 下载安装即可

MSI 面向:

  • 企业 IT 管理员
  • 批量部署电脑

例如公司里有 500 台电脑,管理员不可能手动安装软件,而是会通过域策略直接推送 MSI。

六、其实很多 EXE 里面也藏着 MSI

一个很多人不知道的事实是:

很多 EXE 安装包其实只是 MSI 的外壳。

很多安装器,如:

  • InstallShield
  • WiX
  • Inno Setup
  • NSIS

会把 MSI 打包进 EXE 里。

EXE 的作用只是:

  1. 检查系统环境
  2. 解压 MSI
  3. 调用 msiexec 安装

因此有时候你用解压工具打开 EXE,会发现里面其实藏着 .msi 文件。

七、总结

EXE 和 MSI 的本质区别,其实是 “自由安装”与“标准化安装” 的区别。

  • EXE
  • MSI

因此在个人电脑上,我们最常见的是 EXE 安装器;而在企业 IT 环境中,更常见的则是 MSI 安装包。

理解了这一点,再看到软件提供两种安装包时,你就会知道:

EXE 是给普通用户准备的,MSI 是给系统管理员准备的。