13

我正在使用 WPF 开发 Visual Studio 应用程序,但现在是我必须选择安装程序的时刻。

我需要我的项目能够在 GAC 和注册表上进行编写,但我不确定是否应该使用 Visual Studio 安装程序或 Wix...我在 Google 上找不到确切说明两者之间差异的信息他们。

我发现 Wix 更完整,但我找不到任何文章说明两者之间的真正区别......

谁能帮我找到更具体的信息或在两者之间进行选择?

编辑:对不起,我指定:

我正在使用 Visual Studio 2010 专业版。

4

3 回答 3

14

最终产品是相同的,Windows 安装程序 msi。

只是你到达那里的方式不同。据我所知,使用旧的 vdproj 除了设置要复制的文件和注册表项外,别无其他。如果您是 .net 开发人员,那么您必须在 C++ 或 VBS 中创建自定义操作,这不是一项特别容易的任务。

然而,随着 Wix 的出现,有更多的内置自定义操作使您能够创建丰富的安装体验,如果您需要创建自己的自定义操作,您可以使用 .net。此外,创建一个引导程序要容易得多,它可以安装依赖项以及您的 msi 以及能够在 WPF 中创建前端。

正如@nvoigt 所说,旧的 vdproj 类型在 VS2012 中不受支持,并且如果不进行一些讨厌的设置(您必须安装 VS),它也无法由构建服务器构建。

总而言之,真的不应该使用什么,Wix 是前进的方向。

于 2013-03-07T11:25:14.163 回答
4

Caveman_Dick 写道:

“其他任何事情,您都必须创建自定义操作”。

简而言之,这就是区别。Visual Studio 部署项目将您从底层的 Windows 安装程序中大量抽象出来,并密封了它的大量功能。这与 Windows Installer 的设计背道而驰,Windows Installer 应该是一种声明性的、事务性的编程模型。

以安装 Windows 服务为例?Windows 安装程序具有 ServiceInstall 表。VDPROJ 未能公开这一点,因此您无需编写脆弱的自定义操作,从而导致安装程序不那么优雅和不那么健壮。

另一方面,WiX 是一个非常薄的抽象。这完全是关于表示底层 Windows Installer 表数据的 XML XSD 元素和属性。构建过程只是将 XML 转换为 SQL 表。如果 MSI 可以做到,那么 WiX 可以 (99%) 做到。

VDPROJ 是一个可怕的错误,微软终于承认并杀死了它。现在 WiX 没有 UI 设计器(不过我在 CodePlex 上写过一个),所以您可能还想考虑 InstallShield Limited Edition (FREE)。

结合使用 ISLE 和 WiX,我可以两全其美。

于 2013-03-07T14:06:19.983 回答
0

由于当前版本的 Visual Studio 不再附带安装项目,您可能希望使用 Wix。否则,一旦切换到 Visual Studio 的当前版本,就必须重新编写它。

于 2013-03-07T10:33:26.260 回答