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

我一直在想这个。 这么多的应用程序设置有一个zip文件,你可以解压缩,并在其中包括一堆文件,其中包括exe和msi。 有什么不同? 他们往往大小相同。 我永远不知道要执行哪一个,有时候我会执行exe,有​​时还会执行msi,而且通常可以与任何一个一起工作。 但是他们中的一个做了其他什么都不做的事情? 如果不是,有两个文件做同样的事情是不是有点浪费? 特别是当考虑下载大小等…

不知道这是否应该在这里或在ServerFault,或者两者都不,但我认为,因为开发人员通常是创build设置文件,那么开发人员可能知道为什么这是这样=)

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

你可以考虑将exe作为msi的包装。 msi文件可能会或可能不会分开给出。 人们给msi文件的原因也是为了促进组策略安装(在Windows Active Directory基础结构中),因为只能下载安装的msi文件而不是exes。

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

  • setup.exe可以依靠setup.ini来定义参数
  • setup.exe检查Windows安装程序(否则不能安装MSI)
  • setup.exe可以检查框架,如.NET框架。 开发人员可以从C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages (适用于Visual Studio 2008)中select其中一种。 如果缺less,它将尝试从http://www.microsoft.com/下载它;
  • setup.exe可以使用msistuff.exe重新configuration

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

在运行MSI文件之前,exe提供MS安装程序的自动安装(包括一些问题给用户,如果他/她想这样做的话)。 在大多数情况下,安装程序所需的安装程序包都包含在setup.exe中,或者有时只是通过链接从Microsoft下载安装程序的先决条件检查。

用非常基本的话来说,

你可以只提供.msi文件,它将被安装。 但没有.msi的.exe文件将无法正常工作