我使用 Installaware 创建了一个安装包并生成了一个 EXE 和一个 MSI。EXE是3.1MB,MSI只有265K。为什么大小差别这么大?
3 回答
更新:一些资源,其中包含有关如何处理各种类型的 setup.exe 文件的信息:
MSI 文件msiexec.exe
:MSI 文件只能由Windows 安装程序引擎启动。MSI 文件是能够安装软件的 Windows Installer 数据库文件。它至少需要正确版本的 Windows Installer Engine Runtime 才能安装。大多数系统都是最新的引擎版本,因为它是通过 Windows 更新关闭的。
EXE 文件:您生成的 EXE 文件是一个自解压启动器应用程序,其中包含MSI本身以及安装程序可能具有的各种运行时要求。EXE 文件可能包括的各种组件:
- MSI 所需的Windows Installer Engine Runtime版本(当前版本 5.0)。这些天这个运行时应该由 Windows 更新安装,你的设置应该只是验证它存在。
- MSI 中自定义操作所需的脚本运行时(Installscript for Installshield)。
- 应用程序所需的.NET 运行时版本。我也更喜欢为此使用 Windows 更新,但如果您的应用程序是最先进的,您可能希望包含所需的引擎。您可以将其设置为下载而不是嵌入吗?您也可以将其作为单独的下载提供。
- 徽标文件和启动画面,可能以不同的语言用于多语言设置。
- 其他几个组件是可能的。
Legacy Setup.exe 安装程序:Note that an EXE file can also be a non-MSI installer
换句话说,不是基于 Microsoft MSI 格式(存储在办公风格二进制文件中的 MS-SQL 数据库)的旧式安装程序,而是各种格式的安装脚本,例如Wise Script
,Installscript
,Inno Setup
,NSIS
,etc...
但是,在这种情况下,问题是关于来自 InstallAware 构建的 EXE 和 MSI 之间的大小差异,然后差异是上面解释的运行时。
不同之处在于:MSI 包包含您的文件 + 安装脚本,实际安装由 Windows 的一部分 Microsoft Installer 运行,它负责显示 Windows、记录消息等。另一方面,您的 EXE 安装程序持有文件+实际程序逻辑来运行安装本身,负责几乎所有事情,因此有所不同。
EXE 可能包含由 执行的安装例程,它只msiexec
执行 MSI 中包含的任何安装脚本。