为什么要使用Windows Installer XML (WiX)而不是VDPROJ?

8
为什么我们在拥有内置的 .net MSI 安装程序时,应该选择 Windows Installer XML (WiX)?
5个回答

12

我可以花费数小时来抱怨有关VDPROJ的所有问题,但是根据我的(专业)意见,VDPROJ已经成为过时的工具。如果您的安装程序非常简单,您还没有注意到任何问题,请继续使用它。但是,如果您已经发现自己在与该工具作斗争以获取其无法完成的任务,请听从我的建议,迅速转向WiX。

我讨厌VDPROJ的十件事情:

  1. 没有MSBuild支持。当然,您可以从命令行调用devenv,但效果不如预期。
  2. 没有暴露组件这一关键概念。每个文件/注册表键都是其自身组件的密钥文件。
  3. 没有有效的方式完全排除自动依赖项扫描。
  4. 快捷方式总是广告式的。
  5. 没有描述服务的方法。
  6. 没有描述很多事情的方法,导致自定义操作过度使用。
  7. 无法对自定义操作的调度/执行进行精细控制。过于抽象。
  8. 抽象层次结构是错误的。延迟CA使用模拟身份验证进行调度,导致在Vista上失败。
  9. 各种限制会让您陷入后期构建中处理所有限制的恶性循环中。结果是非常糟糕的构建自动化操作。
  10. 合并模块目录表编写不正确。
  11. 还有一百件我现在记不起来的事情。

1
别客气,直截了当地说出你的想法 :-) - Damien_The_Unbeliever
我曾经花了一年的时间在一个拥有数千个vdproj合并模块和超过1000个InstallUtil自定义操作以及大量构建自动化黑科技的环境中工作。我深刻地知道VDPROJ有多糟糕,我不会希望这种情况发生在我的敌人身上。 - Christopher Painter
我大部分都同意,+1。在我看来,VDPROJ根本不应该使用,但我知道Chris Painter在撰写这篇答案之前或之后发现了一些边缘用途。这并不能改变该项目类型基本上是所有麻烦的事实。即使是专家在需求奇怪时也可能会做错一些事情。 - Stein Åsmul

10

WiX教程介绍提供了关于WiX优势的基本概念,与其他安装程序开发工具(包括VS安装项目)相比:

  • 声明性方法
  • 无限制访问Windows Installer功能
  • 源代码而非基于GUI的信息组装
  • 完全集成到应用程序构建流程中
  • 可能与应用程序开发集成
  • 支持团队开发,包括内部和第三方
  • 免费、开源

希望这有所帮助。


这是Yan的一个很好的回答 +1。我已经以更叙述性的格式写了关于Wix工具包创建历史的文章。Yan的回答更加简洁明了。 - Stein Åsmul

3

Visual Studio 部署包只能通过 Visual Studio 构建,不能使用普通的 MSBuild 命令行构建,这使得它们不太适合用于构建服务器等场景。


这就是为什么我在使用WiX - 它让我能够将一些我想要作为构建服务器产物的实用程序应用程序整洁地打包起来。 - Murph

3

以上所有答案都包含了Visual Studio安装项目(.VDPROJ)最烦人的特性,但大多数人都忽略了一件事。

.VDPROJ文件格式是这样的,如果我们对一个单独条目进行小的更改,它将完全重写所有条目,这使得无法合并来自2个不同分支的更改。


1
  • 我们中的一些人不想或不能使用.NET安装程序。
  • 我们中的一些人不想安装Visual Studio来分发用Borland Delphi编写的程序。WiX和.NET之间没有任何关系。
  • WiX提供比.NET安装程序更完整的功能集。

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