.msi 和 setup.exe 文件之间的具体区别是啥?

Posted

技术标签:

【中文标题】.msi 和 setup.exe 文件之间的具体区别是啥?【英文标题】:What are the specific differences between .msi and setup.exe file?.msi 和 setup.exe 文件之间的具体区别是什么? 【发布时间】:2010-12-19 20:36:51 【问题描述】:

我搜索了很多,但都是猜测的答案。帮助我找到确切的答案。

【问题讨论】:

见***.com/questions/902841/… 这是一个more recent answer 我想安装一个带有 EXE 和 MSI 安装程序的程序。我首先从 MSI 安装,它只安装程序文件(没有任何先决条件或依赖项,也没有创建开始菜单图标)。当我手动启动该程序时,它未能说某些 DLL 丢失。从 EXE 安装也安装了其他东西,产品运行得很好。我想说,如果软件制造商同时提供 EXE 和 MSI 选项进行安装,请使用 EXE。 【参考方案1】:

MSI 是一个 Windows Installer 数据库。 Windows Installer(与 Windows 一起安装的服务)使用它在您的系统上安装软件(即复制文件、设置注册表值等...)。

setup.exe 可以是引导程序或非 msi 安装程序。非 msi 安装程序将从自身提取安装资源并直接管理其安装。引导程序将包含 MSI 而不是单个文件。在这种情况下,setup.exe 将调用 Windows Installer 来安装 MSI。

您可能想要使用 setup.exe 的一些原因:

Windows Installer 一次只允许安装一个 MSI。这意味着很难让 MSI 安装其他 MSI(例如 .NET 框架或 C++ 运行时等依赖项)。由于 setup.exe 不是 MSI,因此可以使用它来依次安装多个 MSI。 您可能希望更精确地控制安装的管理方式。 MSI 对如何管理安装(包括安装、升级和卸载)有非常具体的规则。 setup.exe 可以完全控制软件配置过程。仅当您确实需要额外的控制时才应该这样做,因为这需要大量工作,而且要正确处理可能会很棘手。

【讨论】:

我正要打这个 - 这可能就是他要找的东西 根据我的经验,与构建基于 exe 的安装程序相比,构建 MSI 安装程序需要大量工作。这在很大程度上取决于您首先用于构建安装程序的工具。不幸的是,我见过的所有基于 MSI 的安装工具要么是商业 GUI 工具,要么是复杂的基于 WiX 的工具。两者都不太适合我的需求(即使用脚本自动构建安装程序)。 所以我仍然想知道为什么 MSI 存在。当 exe 似乎工作正常时,它试图解决什么问题? @TheMuffinMan MSI 是一个专门用于安装软件的框架,不像.exe 只是一个可执行文件。 MSI 中的规范可以更有效地处理将软件写入您的 PC。 @TheMuffinMan 安装很难做到正确。有很多事情需要考虑,从来没有做过安装程序的人可能没有意识到,尤其是卸载、升级、修复和修改已安装的软件。 MSI 提供了一个框架,可以让安装程序更可靠、更一致地工作。用户在安装任何软件时都应该有类似的体验,如果没有像 MSI 这样的框架提供和执行标准,这是很难做到的。只要用户在安装软件,我认为就需要这样的框架。【参考方案2】:

MSI 是一个安装程序文件,用于在执行系统上安装您的程序。

Setup.exe 是一个应用程序(可执行文件),它以 msi 文件作为其资源之一。 执行 Setup.exe 将依次执行 msi(安装程序),它将您的应用程序写入系统。

编辑(如评论中所建议):设置可执行文件内部不一定有 MSI 资源

【讨论】:

设置可执行文件内部不一定有 MSI 资源。【参考方案3】:

MSI 基本上是来自 Microsoft 的内置于 Windows 中的安装程序。它将组件与功能相关联并包含安装控制信息。该文件没有必要包含实际的用户所需文件,即用户期望的应用程序。 MSI 可以在其中包含另一个 setup.exe,MSI 包装它,它实际上包含用户所需的文件。

希望这能消除你的疑虑。

【讨论】:

这令人困惑且通常不正确 - 因为MSI 文件通常不要 包装setup.exe 文件,反之亦然。 “MSI 可以在其中包含另一个 setup.exe,MSI 包装”是不正确的!相反,反之亦然:.exe 内部有一个 .msi。【参考方案4】:

.msi 文件是没有 windows 安装程序运行时的 windows 安装程序文件,setup.exe 可以是任何可执行程序(可能是在您的计算机上安装东西的程序)

【讨论】:

以上是关于.msi 和 setup.exe 文件之间的具体区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建 MFC 应用程序来运行 setup.exe(msi 安装程序)?

获取dir setup安装盾牌

MySql安装与MySQL添加用户删除用户与授权

为啥我下载的mysql都找不到SETUP.EXE安装文件呢?无论啥版本都没有

Inno setup打包软件run段了存在.EXE或者.BAT问题?

错误 1310。写入文件时出错:C:\Config.Msi\997da2c.rbf