MSI和EXE安装程序之间有什么区别,我应该选择哪个?

可能重复:
.msi和setup.exe文件有哪些具体区别?

我正在为我的项目的新版本(C#)安装一个安装程序。

以前,我使用Inno Setup创建.exe文件,以便在工作场所的其他计算机上安装我的项目。 虽然阅读了一些教程,但我遇到了Windows Installer XML ,它使用XML文件来构建.msi安装程序。

我的项目将在所有员工都可以访问的网络共享中提供,以便他们可以安装软件(我目前正在处理更新检查程序)

.exe.msi安装程序之间的主要区别是什么? 为什么我要选择一个而不是另一个? 根据我的特定环境,要么更有意义吗?

我在这个问题上找到了一些信息,但没有太多的信息。

我不会将WiX用于新项目。 我在Visual Studio中使用“安装程序项目”来构建MSI。 安装程序项目更容易组合在一起。

许多exe安装程序实际上是存放MSI的存根或容器,顺便说一下。

我猜你已经查看了http://en.wikipedia.org/wiki/Windows_Installer ?

MSI使管理员能够限制安装,重新安装,更改或添加自定义操作,自动执行安装/重新安装/卸载,标准日志记录和交换机。 它只是真正集成到企业IT环境中( http://technet.microsoft.com/en-us/library/bb742606.aspx )。

自定义安装程序可能具有许多这些function,但这取决于安装程序包。

目前可用的大多数EXE安装程序都是简单的存根,用于validation目标计算机是否具有足够的支持来启动存储在EXE中的MSI。 他们进行基本的Windows版本检查和Windows Installer版本检查,然后基本上调用msiexec并让Windows Installer处理剩下的工作。

对于非常基本的安装,Visual Studio中的安装程序项目可以帮助您,但对于任何类型的真正自定义或调整,您将需要一个真正的MSI编辑器。 我们使用WiX并喜欢它 – 但这是一个值得学习的熊。 如果你有现金,你可以投资InstallShield – 但这有它自己的一套怪癖。

MSI是可配置的,而EXE则不是。 我知道这不能直接回答你的问题,但我认为我应该指向ClickOnce技术。

MSDN : 请参见此处的示例。

简单地说,ClickOnce应用程序是使用ClickOnce技术发布的任何Windows Presentation Foundation,Windows窗体或控制台应用程序。 您可以通过三种不同的方式发布ClickOnce应用程序:从网页,网络文件共享或CD-ROM等媒体。 ClickOnce应用程序可以安装在最终用户的计算机上,即使在计算机处于脱机状态时也可以在本地运行,或者可以在仅在线模式下运行,而无需在最终用户的计算机上永久安装任何内容。 有关更多信息,请参阅选择ClickOnce部署策略。

IndigoRose的MSI工厂非常强大,比InstallShield便宜得多。

它在内部使用WiX,允许您以任何您喜欢的方式修改XML文件。 引导程序(.exe,如果你添加一个)有一个强大的基于Lua的脚本引擎来做任何事情。