2010-10-07 191 views
8

我使用Installaware创建了一个安装包,并生成了一个EXE和一个MSI。 EXE为3.1MB,MSI仅为265K。为什么在尺寸上有如此大的差异?EXE和MSI安装程序有什么区别?

+0

如果下载大小有问题,我不建议在您的setup.exe文件中包含Windows Installer引擎。如果我依赖的是微软发布的全新引擎版本,我只包含引擎。否则几乎所有连接到互联网的系统都将安装足够的引擎。即使如此,我还是希望让MSI通知用户运行Windows Update以获取最新的引擎,而不是自动安装它。 – 2014-05-22 19:34:09

+0

[.msi和setup.exe文件的具体区别是什么?](http://stackoverflow.com/questions/1789530/what-are-the-specific-differences-between-msi-and-setup -exe-file) – 2014-08-02 20:18:17

回答

-2

EXE可能包含安装例程,否则该安装例程由msiexec执行,该例程仅执行MSI中包含的任何安装脚本。

+1

不,这是不准确的信息。请删除。 – 2014-05-22 19:31:54

4

区别在于:MSI软件包包含您的文件+安装脚本,实际安装由Microsoft Installer运行,该安装程序是Windows的一部分,它负责显示Windows,记录消息等。另一方面,你的EXE安装程序会持有文件+实际程序逻辑来运行安装本身,几乎负责任何事情,因此有所不同。

+0

有一点需要注意的是msiexec有许多版本,而你的.MSI文件将需要某个版本的Microsoft Installer。也就是说,经常更新Windows的用户总是会安装最新最好的msiexec。 – EboMike 2010-10-07 23:02:05

+0

实际上,从安装工具(如InstallAware,Installshield或AdvancedInstaller)生成的EXE文件通常包含运行时和自举功能,以自动方式启动MSI安装 - 有时以多种语言。 – 2014-05-22 19:37:51

10

MSI文件只能由启动msiexec.exe - Windows安装程序引擎。 MSI文件是能够安装软件的Windows Installer数据库文件。它要求Windows Installer Engine Runtime的正确版本至少可以安装。大多数系统都是最新的引擎版本,因为它是通过Windows Update下载的。

EXE文件你产生是同时包含MSI本身以及各种运行要求的设置可能有自解压启动应用

各种组件EXE文件可能包括:

  • Windows Installer Engine Runtime的版本的MSI要求(当前版本5.0)。这些日子这个运行时应该由Windows Update安装,并且你的设置应该验证它是否存在。
  • 由MSI自定义操作(INSTALLSCRIPT为Installshield)所需的脚本运行时
  • 应用程序(目前获得的10个版本)所需的.NET runtime version。我更喜欢使用Windows Update,但如果您的应用程序处于前沿状态,则可能需要包含所需的引擎。
  • 标志文件和启动画面,可能在多语言设置不同的语言
  • 其他一些部件可能

需要注意的是一个EXE文件也可以是一个非MSI安装程序。换句话说,旧式安装程序不是基于Microsoft MSI格式 - 这是存储在办公式样式二进制文件中的MS-SQL数据库 - 而是各种格式的安装脚本,如Wise Script,Instalscript,Inno Setup等......然而,在这种情况下,问题是关于exe和MSA从InstallAware构建出来的大小之间的差异,然后区别在于上面解释的运行时间。