MSI vs nuget包:哪个更适合持续交付?

时间:2014-07-28 20:57:21

标签: .net wix nuget windows-installer continuous-deployment

让我们讨论以下主题。目前正在部署的应用程序有很好的知道xcopy方法。这种方法很难管理依赖项,文件更新等。有一些软件包的帮助下启动应用程序部署的想法,你知道你在Linux的帮助下RPM,但适用于Windows。

所以我有疑问:在Windows经典Windows安装程序( msi )或 nuget 或其他方面,最好使用哪种软件包系统?

2 个答案:

答案 0 :(得分:25)

  

MSI 是公认的企业应用程序标准。与传统部署相比,它具有some major corporate benefitsand the short, concise version)   技术。 WiX 是创建MSI文件的新开源方式。

     

其他工具

  

Hello World&您好WiX:

  

更多示例代码:

  

WiX快速入门 :以下是我为WiX找到的一些最佳示例代码链接:

           

最后:

     

学习Wix的一些很好的起点链接:

Setup.exe WiX Bundle或从MSI文件本身提取文件:

正如我在我建议的那样写的" Wix快速入门"上面的帖子: Wix是亲自动手只关注简单但完整的真实样本,例如来自Codeproject的样本 - 单独阅读文档可能只会让人感到困惑

专注于将应用程序拆分为组件并设置主要升级。 每个组件使用一个文件作为经验法则,并阅读此答案以更好地了解组件创建: Change my component GUID in wix?

主要升级是部署软件最常用的升级机制(另一种常见升级类型是次要升级)。显然,升级已部署的内容显然至关重要。在部署第一个软件版本之前获得升级方案,以便您对部署解决方案充满信心。

一旦设置了组件并且升级解决方案正常运行,其余部分就会在您完成应用程序的部署要求时完成,并检查 Wix教程中的示例网站https://www.firegiant.com/wix/tutorial/

对于那些直接编写Wix代码(没有GUI编辑器)的人,我建议您查看这个答案,以便保持源文件的简洁: Syntax for guids in WIX?

进一步阅读:

答案 1 :(得分:3)

我现在沿着这条路走下去,我已经使用MSI / WiX为安装程序继承了软件,但是我们希望将我们的流程转换为持续交付,并推出在没有客户端交互的情况下安装的更新。我认为它不适合作为SDK工具的pigeon hole nuget,从本质上讲它是一个部署版本化文件集的工具。此外,如果您正在部署的软件已经在nuget上大量回复,并且您已经将组件打包成nuget软件包以供内部使用,那么为什么要在组合中添加额外的技术呢?在你的msi中打包nuget.exe,定期调用它上的更新,完成。

我知道WiX支持创建补丁,但它似乎是事后的想法。此外,如果您的补丁安装失败会发生什么?不按顺序安装补丁?您的主安装程序需要UAC权限,而您的修补程序不需要吗?

我认为时代在变,MSI代表了一种较旧的思考方式。 Chocolatey就是一个很好的例子,但它仍处于混合阶段,混合了两种技术。

MSI更像是拉 - 你得到一个包,然后安装它。 Nuget更像是一个推送狂潮 - 你得到一个包的名称,安装它,然后定期你可以调用更新,并下载并安装一个新版本。