EXE和MSI安装程序之间有什么区别?

时间:2010-10-07 22:48:25

标签: windows-installer installaware

我使用Installaware创建了一个安装包,并生成了一个EXE和一个MSI。 EXE为3.1MB,MSI仅为265K。为什么尺寸会有这么大的差异?

3 个答案:

答案 0 :(得分:14)

更新:某些资源包含有关如何处理各种类型的setup.exe文件的信息:


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

您生成的 EXE文件是一个自解压启动器​​应用程序,其中包含 MSI 本身以及各种运行时要求设置可能有。

EXE文件可能包含的各种组件:

  • MSI要求的Windows Installer Engine Runtime版本(当前版本5.0)。现在,这个运行时应该由Windows Update安装,您的设置应该只验证它是否存在。
  • MSI中的自定义操作所需的脚本运行时(Installshield的安装脚本)
  • 应用程序所需的.NET runtime version(现在获得10个版本)。我也希望使用Windows Update,但如果你的应用程序是最先进的,你可能想要包含所需的引擎。
  • 徽标文件和初始屏幕,可能使用不同语言进行多语言设置
  • 可能有其他几个组件

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

答案 1 :(得分:5)

不同之处在于:MSI包中包含您的文件+安装脚本,实际安装由Microsoft安装程序运行,它是Windows的一部分,它负责显示Windows,记录消息等。另一方面,您的EXE安装程序正在保存文件+实际程序逻辑以运行安装本身,负责几乎所有事情,因此存在差异。

答案 2 :(得分:-3)

EXE可能包含由msiexec执行的设置例程,它只执行MSI中包含的任何安装脚本。