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

12

可能是重复问题:
.msi和setup.exe文件之间的具体区别是什么?

我正在为我的项目(C #)制作安装程序。

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

我的项目将在网络共享上提供,所有员工都可以访问该共享,以便他们可以安装软件(我目前也在开发更新检查器)

.exe.msi安装程序之间的主要区别是什么?为什么我要选择其中之一?在我的特定环境下,哪个更有意义?

我在这个问题中找到了一些信息,但是没有很多信息。


另请参见https://dev59.com/5XNA5IYBdhLWcg3wk--A - rds
4个回答

6

我不会在新项目中使用WiX。 我会使用Visual Studio中的“安装程序项目”来构建MSI。 安装程序项目要容易得多。

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

我想你已经查看了Windows Installer吧?

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

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


1
只是想让看到这个答案的人知道,它已经不适用于2010年以后的Visual Studio版本。Visual Studio 2012不再支持安装和部署项目。 - Justin Skiles
对于 Visual Studio 2013 及以上版本,Visual Studio 市场上有一个名为“Microsoft Visual Studio 2013 安装程序项目”的扩展(将 2013 替换为您的版本),支持旧版安装程序项目。然而,它存在一个 bug,无法安装 64 位应用程序,并且它生成的向导中的文本没有抗锯齿效果,看起来过时。 - Tsahi Asher

6
今天大多数可用的EXE安装程序只是一个验证目标机器是否有足够支持来启动存储在EXE中的MSI的存根。它们进行基本的Windows版本检查和Windows Installer版本检查,然后基本上调用msiexec并让Windows Installer处理其余部分。
对于非常基本的安装,Visual Studio中的Installer Project可以为您提供帮助,但对于任何实际的自定义或调整,您需要真正的MSI编辑器。我们使用WiX并喜欢它,但学习起来比较困难。如果您有资金,可以投资于InstallShield,但它也有自己的怪癖。

4

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

MSDN在此处查看示例。

简单地说,ClickOnce应用程序是使用ClickOnce技术发布的任何Windows Presentation Foundation、Windows Forms或控制台应用程序。您可以通过三种不同的方式发布ClickOnce应用程序:从Web页面、从网络文件共享或从介质(如CD-ROM)。ClickOnce应用程序可以安装在最终用户的计算机上,并在离线时本地运行,或者在仅在线模式下运行,而不会永久安装任何东西在最终用户的计算机上。有关更多信息,请参阅选择ClickOnce部署策略。


有趣的是,我知道ClickOnce,但我认为它只是一种通过互联网分发软件的方式。我得看看网络共享的东西 - 谢谢! - Jared Harley
很遗憾,ClickOnce没有CustomActions。 - ABCD

1

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

它内部使用WiX,并允许您以任何方式修改XML文件。引导程序(如果添加了一个.exe)具有基于Lua的强大脚本引擎,可以执行任何操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接