为什么这么多程序都有setup.exe和setup.msi?

时间:2009-05-24 01:18:21

标签: deployment installation

我一直在想这个。如此多的应用程序设置都有一个解压缩的zip文件,其中有一堆文件,其中包括exe和msi。有什么不同?它们通常大小相同。我永远不确定要执行哪一个,有时我会执行exe,有​​时候执行msi,它通常适用于任何一个。但其中一个人做了另一个不做的事吗?如果没有,是不是浪费两个文件做同样的事情?特别是在考虑下载大小等时......

不确定这应该是在这里还是在ServerFault上,或者可能都不是,但我认为,因为开发人员通常是创建安装文件的人,所以开发人员可能知道为什么这就像是=)

4 个答案:

答案 0 :(得分:38)

在你同时拥有exe和msi的情况下,exe只是msi的加载器。如果你有一个支持多种语言的安装,那么exe在安装之前会在msi上应用语言转换(mst)。

您可以将exe视为msi的包装器。 msi文件可以单独给出,也可以不单独给出。人们提供msi文件的原因是为了促进组策略安装(在Windows Active Directory基础结构中),因为您只能下载msi文件的安装而不是exes。

答案 1 :(得分:22)

setup.exe是MSI的包装器,但它不仅仅是 包装器。

  • setup.exe可以依靠setup.ini来定义参数
  • setup.exe检查Windows Installer(否则无法安装MSI)
  • setup.exe可以检查框架,例如.NET框架。开发人员可以选择C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages中定义的那些(适用于Visual Studio 2008)。如果缺少,则会尝试从http://www.microsoft.com/
  • 下载
  • 可以使用setup.exe
  • 重新配置msistuff.exe

答案 2 :(得分:14)

实际安装在MSI中完成。正如Prashast所说,exe只是一个包装器,但是拥有exe的原因是exe总是可以运行的。如果用户未在计算机上安装MS Installer,或者他的MS Installer版本早于安装所需的版本,则无法运行MSI文件。

在运行MSI文件之前,exe会自动安装MS Installer(如果他/她想这样做,可以向用户提出一些问题)。在大多数情况下,Microsoft Installer所需的安装包都包含在setup.exe中,或者有时仅通过链接从Microsoft下载安装程序进行检查。

答案 3 :(得分:4)

用非常基本的话说,

你只能提供.msi文件,它会安装。但.exe在没有.msi

的情况下无效