原文地址:http://wix.tramontana.co.hu/tutorial/getting-started
上一节 << 返回目录 >> 下一节入门
就像我们刚才在简介里提到的,WiX工具集使用XML源文件以组件的形式来描述产品的安装流程,同时还有其他数据信息,如快捷方式,注册表或者.ini文件的修改,服务等类似的。除了那些您希望复制到用户硬盘上的文件外,安装包还可以包含辅助文件,虽然参与安装但不会被真地安装(可以是给界面使用的对话框、图标和位图,协议或自述文件以及自定义DLL文件,用以执行Windows Installer不支持的需要编程实现的任务,包括任意形式的用户注册,键值检验等您需要实现的逻辑)。
所有这些将被包含在源文件中并提交给WiX编译器。工具集由几部分组成,我们将使用其中的两个用以编译出安装包。假设我们已经准备好文件Sample.wxs,如下命令:
candle.exe Sample.wxs
将执行编译的第一步操作,创建Sample.wixobj,一个中间文件(这个仍是XML文件,只是内部机构我们并不感兴趣;可以参考常见的object文件在编译中的解释)。第二个命令
light.exe Sample.wixobj
会将中间文件编译成最终的安装包,Sample.msi。很像一般的编译器和链接器。事实上链接器完成的更多,除非我们指定不执行,链接器会进行一次校验操作,用以检测已生成的安装包中是否存在上百种可能的错误和问题。
和现在常见的编译器一样,命令行不是唯一的使用途径。与开发环境集成,如Microsoft Visual Studio或者SharpDevelop也支持WiX工程:和开发环境绑定或者作为插件。以Visual Studio为例,WiX 3.0版本可以自动安装支持组件。通过这种方式,您可以创建单独的安装解决方案,或者将安装工程作为整体方案的一部分。这种情况下,您甚至不需要脱离开发环境就可以编译出最终的安装包了。
不过,虽然“编译”和“链接”的比方是非常明了的,它或许能帮助我们理解WiX到底是如何创建出安装包的,可您不能认为我们在几分钟之内写出WiX的代码可以像写其他脚本或者编程语言那样。我们不需要收集程序安装所需的步骤或操作,部署程序所用的.msi文件其实不是安装程序,而是安装数据库。Windows Installer内已包含可编程业务逻辑的相关知识点,即关于如何安装程序,如何修改注册表键值,如何创建快捷方式,用户和网络共享,如何操作网站目录或者注册服务。我们的安装文件只是描述了我们希望Windows Installer去做什么,以及提供需要部署的文件(还有安装过程中的界面元素)。
“数据库”意味着我们的WiX源文件不会像通常的程序那样被编译。在WiX中没有“顺序执行”的概念,也就是说第一行代码不会比第二行代码先执行。也没有相应的声明用以标明引用关系的优先级。各种元素可以在不同的地方进行描述,并且仅当他们之间存在依赖关系时,其中一个会通过我们必须提供的唯一标示符来引用到另一个。如果您非要按照编程语言的方式进行思考,请将WiX考虑一个功能性的描述语言,而不是命令式规定性语言。
还需要注意,WiX不是一个依赖自身的安装环境。简单的说,它是通过一种方便的XML类型的方式来描述安装需求,并且通过编译器和链接器将其翻译成Windows Installer .msi数据库。从这方面讲,WiX是一种相对轻量级的围绕Windows Installer技术的包装器,虽然确实提供附加的功能用以帮助安装开发者,但它的能力由底层技术所支撑,它的局限性则不是它本身,而是Windows Installer自己。
上一节 << 返回目录 >> 下一节