wix Language Feature Property CustomAction

1) Language与Codepage的设

Language指所在地区使用的语言,为数字编号。
Codepage指所在地区的代码页,用来进行区域区分。
下来列举几个常见的区域代号:
语言 语言-国家 Language Codepage
English en-us 1033 1252
Simplified Chinese zh-cn 2052 936
Traditional Chinese zh-tw 1028 950

2) GUID的生成

在VS2005中,通过“工具”——“创建GUID”生成。
GUID也可以自行定义,但是前提是要保证唯一。

3) 安装文件描述XML自动生成

当安装文件特别多的时候,我们就需要用专用的工具进行文件描述XML的自动生成了,采用的是Wix自带的heat工具,位于安装目录的bin下。
Heat的使用方法为:
heat.exe [-?] harvestType <harvester arguments> -out sourceFile.wxs
详细见Wix说明文档。
例子:
heat.exe dir ABC -gg -ke -sfrag -template:fragment -dr INSTALLLOCATION -cg BasicComponentGroup -srd -out ABC.wxs
作用为:将目录ABC(相对目录)下的所有文件(包括空目录)作为一个ComponentGroup添加到ABC.wxs文件中,其中根目录为INSTALLLOCATION,段标签为fragment,
运行这行命令会自动生成一个wxs文件,里面包含ABC目录下所有文件的描述。

4) Feature的选择安装

Wix安装包中所有的组件都是以Feature的方式安装到系统中的,Level是安装级别,是最重要的属性之一,不可缺少。
Level的值为整型,最小为0,最大1000。为0的时候此Feature不安装。 一般来说Level与选择安装关联,与之相对应的一个属性为INSTALLLEVEL,默认为1.小于1的Feature将不会被安装。Level值为3的Feature为Typical类型,Level值大于3为Complete类型。Level也可以在安装时动态修改,使用<Condition>条件判断。例如:
<Feature Id="DesktopFt" Title="Desktop" Level="1">
<Condition Level="0"><![CDATA[HASDESKTOP <> "1"]]></Condition>
<ComponentRef Id="DesktopShortcutComponent"/>
</Feature>
如果HASDESKTOP属性值不为1,那么此Feature的Level将为0,不会被安装。使用此种方式选择安装需注意HASDESKTOP属性的初始化位置,一定要保证在Feature初始化前进行。否则设置无效。
也可以采用另一种方法选择性安装:
HASDESKTOP属性修改的地方添加<Publish>。
<Publish Event="AddLocal" Value="ALL">1</Publish>
<Publish Event="Remove" Value="DesktopFt"><![CDATA[HASDESKTOP <> "1"]]></Publish>
这样效果一样,但是不需要HASDESKTOP的值的初始化在Feature之前。
详细参考 http://www.joyofsetup.com/2007/05/30/feature-conditions-and-ui/
(附注: 注意此种方式下内置属性REMOVE的值就不再为空,那么在安装时也不能以REMOVE来判断当前操作)

5) Property的使用

Wix中使用自定义变量的方法为声明Property(属性)。
Property分为两种:全局的和局部的。全局属性必须全部大写,否则视为局部属性。
例如:
<Property Id="HASDESKTOP" Value="1"/>
如果改为小写,那么其他文件(也许是fragment)的代码调用属性无效。
搜索、判断得到的属性一律为全局属性,大写。例如:
<Property Id="VC71PATH">
<RegistrySearch Id="VC71" Type="raw" Root="HKLM" Key="SOFTWARE/Microsoft/VisualStudio/7.1" Name="InstallDir"/>
</Property>
上述例子为在注册表中查找VC71的InstallDir的值,如存在将值付给VC71PATH,不存在则VC71PATH为空。

6) 安装包的中文化

Wix默认的语言为en-us,中文化需要另外添加zh-cn或zh-tw的描述文件。
拥有了中文拓展的文件以后,在代码中使用loc调用属性即可,使用方式与en-us无异。
当然也可以自定义一些中文化的标签,格式为:
<WixLocalization Culture="zh-cn" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="LicenseThirdPartText" Overridable="yes">请仔细阅读以下声明</String>
</WixLocalization>
调用方式为:text =”!(loc.LicenseThirdPartText)”

中文语言包下载地址为:http://download.csdn.net/salever

7) 内置CustomAction的使用

1. Quiet Execution Custom Action 安静模式下执行操作。允许用户在后台执行一些命令,但是不出现执行窗口。
例1,安静模式下执行CMD操作
<Property Id="QtExecCmdLine" Value="command line to run"/>
<CustomAction Id="QtExecExample" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check"/>
<InstallExecuteSequence>
<Custom Action="QtExecExample" After="TheActionYouWantItAfter"/>
</InstallExecuteSequence>
采用安静模式执行CMD操作,但是不出现CMD命令窗口。注意Value中的命令以及应用程序必须加引号,即使没有空格也要加上。

例2,安静模式下执行其他应用程序操作
<CustomAction Id="QtExecDeferredExampleWithProperty_Cmd" Property="QtExecDeferredExampleWithProperty"
Value=""[#MyExecutable.exe]"" Execute="immediate"/>
<CustomAction Id="QtExecDeferredExampleWithProperty" BinaryKey="WixCA" DllEntry="CAQuietExec"
Execute="deferred" Return="check" Impersonate="no"/>

<InstallExecuteSequence>
<Custom Action="QtExecDeferredExampleWithProperty_Cmd" After="CostFinalize"/>
<Custom Action="QtExecDeferredExampleWithProperty" After="TheActionYouWantItAfter"/>
</InstallExecuteSequence>

2.ShellExecute CustomAction 执行打开文档或URL等操作。典型应用为安装完成后打开帮助文件或则运行安装程序。
例:
<Property Id="WixShellExecTarget" Value="myapplication.exe" />
<CustomAction Id="LaunchApplication"
BinaryKey="WixCA"
DllEntry="WixShellExec"
Impersonate="yes" />
</Product>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值