msi, exe, installer,

MSI和EXE拓展的安装包的差异

DolorHunter DolorHunter Follow Aug 01, 2021 · 8 mins read

MSI和EXE拓展的安装包的差异
Share this

Windows 系统下应用的安装文件通常为 MSI(Microsoft Installer) 或者为 EXE(executable file)。从命名角度来看,MSI 作为安装包更为合理,不过按照使用经验来看却不相符,国外两个文件平分秋色,国内几乎是一面倒的用 EXE,两个拓展到底有何区别呢?

MSI 是一个安装程序数据库,其中包含一组安装程序文件以及安装、更新、修改或删除计算机上某些软件所需的所有数据,而 EXE 文件可用于安装和运行应用程序软件,并且还具有用户可以自由与安装程序交互的额外好处。EXE 安装文件时也会调用 MSI 文件。

MSI与EXE对比表

参数 MSI EXE
意义 MSI 是指帮助存储有关要安装的文件的数据或信息的数据库文件。 EXE 有助于访问电子设备中已有的文件。
基本使用 MSI 用于软件开发。 EXE 几乎可以用于任何事情,而不仅限于软件开发。
接口 MSI 文件被认为具有标准和预定义的 UI,并且易于使用。 EXE 文件根据硬件或应用程序的类型具有不同的接口。
安装附属 据说 MSI 文件附带按需安装功能,因此安装的其余部分可以在软件启动后完成。 EXE 文件没有此功能,因为它必须能够访问所有数据库文件。
语言选择 MSI 文件不提供用户选择的安装语言,即使此功能已合并到 MSI 软件中。 EXE 文件可帮助用户选择安装语言。

可能使用EXE的原因

setup.exe 可以是引导程序或非 msi 安装程序。非 msi 安装程序将从自身提取安装资源并直接管理它们的安装。引导程序将包含 MSI 而不是单个文件。在这种情况下,setup.exe 将调用 Windows Installer 来安装 MSI。

Windows Installer 一次只允许安装一个 MSI。这意味着很难让 MSI 安装其他 MSI(例如 .NET 框架或 C++ 运行时等依赖项)。由于 setup.exe 不是 MSI,因此可用于依次安装多个 MSI。

您可能希望更精确地控制安装的管理方式。MSI 对如何管理安装(包括安装、升级和卸载)有非常具体的规则。setup.exe 可以完全控制软件配置过程。只有当您确实需要额外的控制时才应该这样做,因为它需要大量的工作,而且很难做到正确。

MSI 文件可以编辑,您可以使用 Orca 直接访问 MSI 数据库,或者使用您喜欢的 Windows 黑客方法通过 WindowsInstaller API 对其进行编码。

总结

MSI 作为安装包的标准格式,简化了软件打包过程,也提高了安装到恶意程序的难度。EXE 作为安装包的可塑性比较强,可以客制化程度更高的完成安装,但是需要大量额外工作,从开发者的角度来看,MSI 无疑提供了更高的便捷性,因此 MSI 逐渐变为趋势,从很多软件的安装包也逐渐变为 MSI 就能看出。

至于那些还使用 EXE 的应用,我猜想如果不是为了安装依赖,估计是因为技术迭代的不够快的原因吧。MSI 主要由 Microsoft 制作,用于解决由第三方软件工程师创建的非标准软件安装程序。由于 EXE 文件有时被用作恶意程序的手段,因此使用未知的 EXE 文件可能对您的计算机系统有害,因此安装包改为 MSI 在变得更有必要。

参考资料:

Join Newsletter
Get the latest news right in your inbox. We never spam!
DolorHunter
Written by DolorHunter
Developer & Independenet Blogger