原文地址:http://wix.tramontana.co.hu/tutorial/
Windows Installer XML (WiX) 是一套帮助您从XML源文件中创建Window安装包的工具集。该工具集可在命令行环境中创建MSI和MSM安装包,这样开发人员不仅可以将其和以前的 Makefile集成,还可以利用新的MSBuild技术与微软的Visual Studio,或者SharpDevelop等开发工具集成。
WiX是开源项目,最初由微软开发,Rob Mensching来维护。您可以在此下载最新发布版本和源代码。本教程基于最新3.0稳定版。
工具集由C#编写,需要运行在.NET Framework 2.0和Service Pack 1之上。 但是, 这仅对工具集而言,通过WiX创建的安装包不依赖任何版本的.NET Framework或其他软件。同理,为了生成merge modules或补丁所需的其他工具也是仅仅部署在编译环境里,实际安装环境只需要生成的安装包,不需要其他的。
通过专门托管在SourceForge邮件列表,WiX开发人员可以和其他用户进行广泛且深入的交流。这也是寻求WiX各方面帮助或建议的最好方式。如果您已经拥有SourceForge 的账户,可以通过相应站点加入,更简单的办法是发送一条空邮件到此订阅地址。 作为使用邮件列表的惯例,在提问题之前您最好先订阅它,否则其他用户可能以为您的邮件是垃圾邮件……
仅仅完成了程序的开发还远远不够,如今使用者也开始关注产品的安装,看它是否成熟,是否好用。作为最终用户了解产品的第一步,拥有完善、可信赖的安装,其重要性也是不容小视的。
传统的安装工具使用可编程的,基于脚本的方式去描述涉及到如何部署某个产品到客户端时所需要的各种步骤,如文件的复制、注册表的创建、硬件驱动的安装和系统服务的启动。而Windows Installer技术,不仅为最终用户提供了统一界面和体验,还有非常重要的深层次的变化。最根本的莫过于从命令式描述转向声明式,即不再描述单个的安装步骤,而是在表中声明并指定,安装和卸载的各个阶段后,客户端应具有的状态。如果不碰到错误,命令行描述还是挺有效的,但声明式可以更好的应对各种未知的状况,不同的客户端环境,甚至终止安装或者共享资源。这对安装开发人员了解整个过程的细节显得至关重要,客户端应该是处于可知且稳定的状态,且没有其他任何干扰的因素。
经常使用安装工具的开发人员也开始尝试学习这项新技术,他们不断分享自己编写的用于创建此类型安装程序的新版本工具。但从开发人员那里得到的反馈来看,虽然这些工具可以创建更简单的安装包,在面对稍加复杂的需求时,它们就显示出太多限制且缺乏灵活性。
我们将介绍的工具集,WiX,则使用了不同的策略。它更像是一种编程语言,而不是某种允许开发人员手动添加文件和生成安装所需其他相关工序的带有图形界面的工具。它使用文本文件(基于越来越流行的XML格式)来描述安装步骤需要的所有元素,因此可以和常见程序创建过程完美结合。工具集中提供了编译器和链接器用以创建安装程序,就和我们常见的编译器从源文件中创建出应用程序一样。因此,WiX可以被非常容易的集成入任何程序的自动化构建过程,可以是基于典型技术的Makefile,也可以是如今具有类似功能的集成开发环境。
除了上述集成外,为了方便开发人员,WiX还提供了其他层面的,更具优势的“集成”方式:安装包开发过程与产品开发过程本身相结合。传统上,安装包只有等到主程序开发完成后才开始编写且通常是由不同开发者负责。这种做法,需要收集产品用到所有资源的信息,单调且容易出错。尽管通常来说文件本身是显而易见的,但注册表项,服务和大部分有依赖“内嵌”资源的窗体则不是那么容易在后期重组的:如果没有可靠的开发文档,安装开发人员则不得不从最初的开发人员那里收集相关信息或者得去分析源文件了。
在产品开发和安装开发集成的环境里,最初的开发人员可在产品开发过程中同步的修改WiX源文件。只要启动了新的功能模块,只要编写了新的注册表项,服务或者依赖,对应的安装上的修改也同步进行。通过这种方式,再不会丢失重要的信息,还带来一个好处,安装程序将和产品一起完成。
也因此,WiX并不适合所有的开发人员。相对的,其学习难度(刚好也是我们这个教程的目的,帮助您克服这些困难)和不可避免的需要对内部细节的了解,有时,甚至是晦涩难懂的Windows Installer基础知识都可能让那些刚接触的开发人员或者那些根本不需要WiX如此灵活高效的开发人员转投其他较简单的,基于界面的安装开发工具,商用和免费均有。
总结,此工具集的功能和优势如下:
l 基于声明式
l 全面支持Windows Installer的各项功能
l 源文件可读性高
l 与产品编译过程完全集成
l 可与产品开发过程集成
l 支持团队开发,内部或第三方
l 免费,开源
您或许想知道WiX是否已经足够成熟,可以支持大规模,复杂的,需要大量文件部署的产品?嗯,微软自己已经将所有主流的软件打包方式转到WiX。仅举一个例子,微软Office 2007的安装包是完全基于WiX开发的。
我想表达对Rob Mensching的感谢,是他最初创建的这个工具集,还有Neil Sleightholm,Vadym Stetsyak,Robert Pickering,Marc Borgers,John DeSoi,Markus Karg,Greg Glass,Stefan Krüger,Nobuo Kihara,Phil Wilson,Peter Tewkesbury,Nicholas Muguira,David Adams,Mike Green,Chesong Lee和Christophe Michel,感谢他们对此教程做出的重要贡献。
上一节 << 返回目录 >> 下一节