使用WiX打包你的应用程序之一---基本应用
来源:互联网 发布:淘宝发货地址不是买家 编辑:程序博客网 时间:2024/06/13 22:28
很多从事开发的同行,在程序部署方面经常遇到这样一些问题:
- 程序部署复杂,无法搞定,甚至于必须开发人员到现场去安装调试;
- Visual Studio Deployment 项目难以使用及定制
- 使用Install Shield等比较费钱的工具(如果你爱使用盗版并且不介意在将来某个时候承受版权纠纷,那么这条不算).
- 甚至于没有安装包,显得很不正规(呵呵,我以前也这么干^_^)
如果你遇到这些问题,并且确定你是使用Microsoft家的Visual Studio系列IDE进行开发,那么我觉得有个很好的打包工具可以推荐给你: Windows Installer XML, 简称WiX.
WiX是Microsoft Corp.的Windows Team 的一个叫Rob Mensching的软件设计工程师(现在已经是高级软件设计工程师啦)在2000年设计的一个简单打包工具集合.到现在为止,稳定版本为2.0.5325.0,最新可用版本为3.0.2925.0. V3和V2的主要区别是针对任务结构和对VS的集成做了新的修改. 由于作者在实际的应用环境中,出于稳定性和减少因工具使用带来的bug这两个方面的考虑, 应用了V2 Stable作为打包工具集. 在这个系列文章中,也会使用该版本讲解. 实际V2和V3的差别,如果读者对V3很感兴趣,请自行研究,不再在本系列中详细对比.
请从这里下载WiX 2.0.5325.0
请从这里下载WiX 3.0.2925.0 ProjectAggregator2 3.0.2925.0
一个Windows安装文件(.msi files)在应用意义上来说可以说成是一个小型数据库,Windows Installer运行安装文件的安装过程,就是根据这个小型数据库的对应表的描述,讲对应文件拷贝到目标文件夹,修改指定文件内容, 修改对应注册表内容,修改系统服务等. 这个数据库是由几个主要表组成:
表名 主要用途 Direcotry表 规定目标的文件夹结构,Directory节点的嵌套结构就是Default路径. File表 规定想要被安装到目的地的文件, 在打包时从何处获取; Binary表 规定在安装过程中要使用的文件, 在打包时从何处获取; (区别于File) Component表 规定安装包内的基本组件结构,共同完成同一功能的文件及Action, 应归纳在一个Component节点下 Registry表 规定对注册表项的修改 Feature表 Component的不同组合就是Feature; 允许用户定制安装不同组件. Dialog表 安装过程显示的窗体 CustomAction表 自定义的Action保存在这里 User表 定义操作系统的User(Windows) UserGroup表 定义操作系统的Group(Windows) Property表 定义在安装包内部使用的属性; 属性是用来传递信息的节点. IIS*表 进行IIS有关操作. XMLFile表 对XML或者类似文件中的某些节点进行修改的Action表.你可以使用Orca来打开任何一个msi文件查看以上内容^_^
一个简单的WiX文件(wixdemo.wxs)内容如下, 这个版本没有UI,有UI的版本请从我的SkyDrive下载:
1: <?xml version="1.0" encoding="utf-8"?>
2: <?define SOURCEDIR="C:/wixdemo"?>
3: <Wix xmlns="http://schmeas.microsoft.com/wix/2003/01/wi">
4: <Product Name="WixDemo" Id="904F998D-B3BE-4536-9ABE-F8B72B98BCEA" Language="1033" Version="1.0.0.0" Manufacturer="Wix Demo Corp.">
5: <Package Id="4DB93456-952B-4463-BFD0-86306D5C29D4" Keywords="Installer" Description="Our road to first wix installer" Comments="We will rock you" Manufacturer="Our Corp." InstallerVersion="100" Languages="1033" Compressed="yes" SummaryCodepage="1252" />
6: <Media Id="1" Cabinet="OMSimulator.cab" EmbedCab="yes" />
7: <Directory Id="TARGETDIR" Name="SourceDir">
8: <Directory Id="ProgramFilesFolder" Name="PFiles">
9: <!--Write a new key to registry on installation and remove it when unstallation-->
10: <Component Id="RegComponent" Guid="6EEBA57B-A0B0-4328-A414-931A14904913" DiskId="1">
11: <Registry Id="SignatureKey" Root="HKLM" Key="SOFTWARE/WixDemo/MySignature" Action="createKeyAndRemoveKeyOnUninstall" />
12: </Component>
13: <!--Target Directory: ProgramFile/Wix Demo Application-->
14: <Directory Id="WIXDEMO" Name="WixDemo" LongName="Wix Demo Application">
15: <!--File to be copied-->
16: <Component Id="WixApp" Guid="C03083B7-E539-47b3-84C6-88ED783A5C31">
17: <File Id="File_1" Name="Readme" LongName="Readme.txt" KeyPath="no" Compressed="yes" src="$(var.SOURCEDIR)/" DiskId="1"/>
18: </Component>
19: <!--File to be copied and configed-->
20: <Component Id="Config" Guid="DCACE815-3FEF-4f1d-8494-1F1877954578">
21: <File Id="File_2" Name="WebCon" LongName="Web.config" KeyPath="yes" Compressed="yes" src="$(var.SOURCEDIR)/" DiskId='1'/>
22: <XmlFile Id='ConnStrSet' File='[WIXDEMO]web.config' Action='setValue'
23: ElementPath="/configuration/connectionStrings/add[/[]@name='ConnectionString'[/]]/@connectionString"
24: Value="Data Source=[INSTANCE];Initial Catalog=[DEMODB];Connection Timeout=300;Integrated Security=SSPI;"
25: Sequence='1' />
26: <XmlFile Id='LogPathSet' File='[WIXDEMO]web.config' Action='setValue'
27: ElementPath="/configuration/appSettings/add[/[]@key='LogFilePath'[/]]/@value"
28: Value="[LOGPATH]"
29: Sequence='2' />
30: </Component>
31: </Directory >
32: </Directory>
33: </Directory>
34:
35: <Feature Id="DemoFeature" Title="This feature installs the components for WiX demo" Level="1">
36: <ComponentRef Id="RegComponent"/>
37: <ComponentRef Id="WixApp" />
38: <ComponentRef Id="Config" />
39: </Feature>
40:
41: <Property Id="INSTANCE" Value="." />
42: <Property Id="DEMODB" Value="WixDemoDB" />
43: <Property Id="LOGPATH" Value="c:/WixDemo/log" />
44: </Product>
45: </Wix>
保存为wixdemo.wxs到c:/wixdemo, 并我的skydrive里面的web.config, readme.txt, 使用命令
candle wixdemo.wxs
light wixdemo.wixobj sca.wixlib wixca.wixlib /out wixdemo.msi
之后就可以得到安装文件wixdemo.msi
这个demo的主要目的是演示文件拷贝, 文件内容根据特定指示修改, 在接下来的版本中会根据在安装时用户在ui中输入的信息更新配置文件.
Xpath的写法,IIS相关问题, UI相关问题,属性相关问题,自定义Action问题以及我的WiX实践,将在这个系列后面几篇文章中一一讨论.
- 使用WiX打包你的应用程序之一---基本应用
- 使用WiX打包你的应用程序之一---基本应用
- 使用WiX打包你的应用程序之一---基本应用
- 使用WiX打包你的应用程序之二---向WiX脚本传递信息(属性)的几种方式
- 使用WIX制作C#应用程序的安装包
- 使用PHPSA搭建你的应用程序(phpsa系列教程之一)
- 使用 Inno Setup 快速打包你的应用程序
- Wix打包
- [跨浏览器插件开发] FireBreath打包工具WIX的使用注意
- Wix打包系列(一)如何使用wix制作安装程序
- Wix打包系列(一)如何使用wix制作安装程序
- Wix打包系列(一)如何使用wix制作安装程序
- Wix打包系列(一)如何使用wix制作安装程序
- Wix打包系列(一)如何使用wix制作安装程序
- 使用wix
- Wix使用
- WIX打包专题
- apk打包和反编译四、为你的应用程序签名
- 掌握 Ajax,第 1 部分: Ajax 简介
- Java 编码规范(2)
- 应聘C语言类工作职位面试题大汇总
- 应聘C语言类工作职位面试题大汇总2
- 应聘C语言类工作职位面试题大汇总3
- 使用WiX打包你的应用程序之一---基本应用
- A project with an Output Type of Class Library cannot be started directly
- 我的文章01
- 应聘C语言类工作职位面试题大汇总4
- 如何使用ArcGIS9.2中的动态显示(Dynamic Display)技术(三)
- 应聘C语言类工作职位面试题大汇总5
- 应聘C语言类工作职位面试题大汇总6
- 将Excel数据导入到数据库中
- jar文件的双击运行