Windows services .msi和setup.exe文件之间的具体区别是什么?

Windows services .msi和setup.exe文件之间的具体区别是什么?,windows-services,installation,windows-installer,Windows Services,Installation,Windows Installer,我搜索了很多,但都是猜测的答案。请帮助我找到确切答案。.msi文件是没有windows installer运行时的windows installer文件,setup.exe可以是任何可执行程序(可能是在您的计算机上安装东西的程序)msi基本上是Microsoft的安装程序,内置于windows中。它将组件与功能关联,并包含安装控制信息。此文件不必包含实际用户需要的文件,即用户期望的应用程序。MSI可以包含MSI包装的另一个setup.exe,它实际上包含用户所需的文件 希望这能消除您的疑虑。MS

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

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

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


希望这能消除您的疑虑。

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

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

您可能希望使用setup.exe的某些原因:

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

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

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


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

我要键入此内容-这可能是他所期待的-根据我的经验,与构建基于exe的安装程序相比,构建MSI安装程序需要大量工作。这在很大程度上取决于您首先用来构建安装程序的工具。不幸的是,我看到的所有基于MSI的安装工具要么是商业GUI工具,要么是复杂的基于WiX的工具。这两种方法都不能很好地满足我的需要(即用脚本自动构建安装程序),所以我仍然想知道为什么MSI会存在。当exe看起来运行正常时,它试图解决什么问题?@TheMuffinMan MSI是一个专门用于安装软件的框架,而不像
.exe
,它只是一个可执行文件。MSI内部有一些规范,可以更有效地处理将软件写入PC的操作。@TheMuffinMan安装很难正确进行。有很多事情需要考虑的是,从未安装过安装程序的人可能没有意识到,尤其是卸载、升级、修复和修改安装的软件。MSI提供了一个框架,使安装程序能够更可靠、一致地工作。用户在安装任何软件时都应该有类似的体验,如果没有MSI这样的框架提供和实施标准,这是很难做到的。只要用户正在安装软件,我想就需要这样的框架。请看下面的一个例子,我想安装一个EXE和MSI安装程序附带的程序。我首先是从MSI安装的,它只安装程序文件(没有任何先决条件或依赖项,也没有创建开始菜单图标)。当我手动启动该程序时,它没有告诉我某些DLL丢失了。从EXE安装也安装了其他东西,产品运行正常。我想说的是,如果软件制造商同时提供EXE和MSI选项进行安装,请使用EXE。这是令人困惑的,而且通常是不正确的-因为
MSI
文件通常不包装
setup.EXE
文件,反之亦然。“MSI可以包含MSI包装的另一个setup.EXE”是不正确的!相反,情况正好相反:一个.exe里面有一个.msi。安装程序可执行文件内部不一定有一个msi资源。