WiX技巧:使用MSBuild和Windows Installer XML执行自动发布2011-09-03 MSDN Sayed Ibrahim Hashim本文讨论:Windows Installer XML 概述创建 WiX 打包说明集成 WiX 和 MSBuild自动执行生成和打包本文使用了以 下技术:Visual Studio, Windows Installer XML (WiX), MSBuild目 录WiX 简介创建 WiX 文件WiX 和 MSBuildMSBuild 批处理自动执 行生成和打包分析 MSBuild 脚本综述自定义过程总结在开发过程中,重要的 是有自动的生成过程。同样重要的是要有自动创建发布的手段。遗憾的是,在很 多组织中(尤其是较小的组织),并没有这些。通常,您会发现发布内容只是在 最后一分钟才被拼合在一起。但是,如果花时间建立自动生成和发布计划,就会 节省无数的时间,您就可以将这些时间更好地用在完成任务上,而不是用来生成 和发布项目。在本文中,我将介绍如何使用 Microsoft® Build Engine (MSBuild) 和 Windows® Installer XML (WiX) 工具集在组织中实现 自动和可重复的生成和发布过程。本文讨论了 WiX v2(注意,当 WiX v3 发布时 ,不会直接转换某些语法示例)。虽然 WiX 的确简化了创建发布的过程,但无论 您是否使用 WiX 创建发布,本文描述的技术都可供您参考。也可以对这些技术进 行一些修改后,将它们应用于不使用 Microsoft .NET Framework 2.0 所开发的 应用程序(本文还包含指向英文网页的链接)。我将假定您熟悉 MSBuild (如果需要重新了解它,请参阅我在 2006 年 6 月的《MSDN®杂志》上的文 章 深入了解 MSBuild:通过 Microsoft Build Engine 的自定义任务以自己的方 式编译应用程序)。我将为那些不熟悉该工具的人提供 WiX 工具集的概述。请参 见侧栏“MSBuild 和 WiX 资源”中关于更多相关文章和工具的参考。 在本文中,为了进行演示,我将使用我的 Sedodream MSBuild 项目。您可以从 www.codeplex.com/Sedodream 获得最新源代码。WiX 简介创建应 用程序时,通常最终结果是要在生产计算机上安装并运行它。WiX 工具集可以帮 助您完成此任务。在这一节中,我将描述 WiX,并介绍如何使用 WiX 创建安装程 序。WiX 描述了在目标计算机上的安装是什么样子的。从 Visual Studio® 到 Microsoft Office,在很多 Microsoft 应用程序中都使用了 Windows Installer。您可能会吃惊地发现:WiX 实际上是个开放源代码的项目, 并且承载在 sourceforge.net 上。您可以从 wix.sourceforge.net 下载最新的 二进制文件和源文件。下载并安装 WiX 后,您会发现计算机上安装了如图 1 中 总结的大量可执行文件。我将重点介绍 Candle.exe 和 Light.exe 工具的使用。Figure1WiX 组件
名称 | 说明 |
Candle.exe | 将 WiX 源文件转换为中间表示形式。 这实际上是另一个 XML 文件,但永远不应手动更改这些生成的文件。 |
Dark.exe | 将 MSI 文件转换为适当的 WiX 源文件( 可以视为“反编译”安装程序)。 |
Light.exe | 从 WiX 源文件的中间表示形式生成 Windows Installer。 |
Lit.exe | 生成 WiX 库,该库 可用于生成其他安装程序包。 |
Tallow.exe | 用于创建 WiX 源 XML,以复制它在安装目录或文件中的文件和文件夹。 |
WixCop.exe | 检查 WiX 源文件中存在潜在问题的区 域,类似于 FxCop。 |
WiX 使用声明性语言,而不是过程性 语言,这意味着您要描述您的安装将是什么样子的,而不用描述为了实现它需要 执行哪些步骤。这可能与您的习惯不同,但它非常容易掌握。通常,要安装在目 标计算机上的描述文件将填充 WiX 源文件。在这里,我将重点介绍这些组件。在 WiX 源文件中,有三个与您希望安装的文件有关的主要元素:文件、 组件和功能。文件元素是对单个文件的引用。文件必须包含在组件元素中,组件 元素是最小的安装单位。就是说,如果您有一个包含 100 个文件的组件,并且您 要安装该组件,则会安装它包含的所有文件。相反,如果不安装该组件,则不安 装任何文件。建议不要创建包含大量文件的组件。组件始终包含在功能元 素中,并且可以包含在多个功能中。功能是一组组件,也可能是一组子功能。如 果安装程序具有允许用户选择要安装哪些项的图形界面,则用户实际是在选择功 能。