Wix使用整理(一)
由于工作需要,学习了一段时间Wix,总算小有起色。鉴于国内Wix 的普及和使用有限,这里将个人遇到得问题和解决方案记录下来,以便交流和相互促进。
Wix :全称 Windows Installer XML , 属于微软的一个开源项目,目标是使用 XML 语言灵活的定制具有各种功能的安装包,需要微软的 Windows Installer 服务支 持。
Wix 生 成的产品为 msi 文 件,这种可执行文件与 exe 文件最大的不同为,它更底层,安装文件的同时可以对系统或者其他软件进行设置。
下面的所有内容是基于 Wix3.0 版本。
Wix 基本入门资料:
Wix Document
Wix tutorial ( 仅支持到 Wix2.0)
这两份资料都可以通过 Wix 的发布网站获取。
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 I d="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>
Wix使用整理(一)的更多相关文章
- Wix学习整理(5)——安装时填写注册表
原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信 ...
- Wix学习整理(6)——安装快捷方式
原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注 ...
- Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式
原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些 ...
- Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析
原文:Wix学习整理(4)--关于WiX文件格式和案例HelloWorld的分析 关于WiX文件格式 .wxs是WiX的源文件扩展名..wxs文件以类XML文件的格式来指定了要构造Windows In ...
- Wix学习整理(3)——关于Windows Installer和MSI
原文:Wix学习整理(3)--关于Windows Installer和MSI 关于Windows Installer Windows Installer是微软Windows操作系统自带的一个软件安装和 ...
- Wix学习整理(1)——快速入门HelloWorld
原文:Wix学习整理(1)--快速入门HelloWorld 1 Wix简介 Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Instal ...
- Wix学习整理(2)——HelloWorld安装添加UI
原文:Wix学习整理(2)--HelloWorld安装添加UI 在前一篇随笔Wix学习整理(1)——快速入门HelloWorld中,我们制作的安装包安装界面太简单,没有与用户进行交互的过程.下面我们修 ...
- Wix使用整理(二)
1) 安装卸载时进行日志记录 Wix 制作的 Installer 的调试很麻烦,没有直接的 Bug 工具,可以通过记录安装日志的方式进行间接调试.命令为 msiexec /i pack ...
- [笔记]WiX制作msi安装包的例子
WiX是制作msi安装文件的工具,看了半天文档,感觉没有什么比一个例子更简单粗暴的了. <?xml version="1.0" encoding="UTF-8&qu ...
随机推荐
- Java的BIO,NIO,AIO
Java中的IO操作可谓常见.在Java的IO体系中,常有些名词容易让人困惑不解.为此,先通俗地介绍下这些名词. 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同 ...
- Shp上传至Oracle Spatial
1.下载shp2sdo,将shp文件拷贝至shp2sdo相同路径下,打开windows命令窗口,执行: shp2sdo shp文件名 表名 -i id -s 4326 -d 例如:shp2sdo ci ...
- STL中stack/queue/map以及Boost unordered_map 的使用方法
一.stackstack 模板类的定义在<stack>头文件中.stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型 ...
- jquery自定义插件-参数化配置多级菜单导航栏插件
1 自定义菜单导航栏插件的必要性 看图说话,下面是利用自定义的菜单导航栏插件simpleMenu创建的网站导航示例: 插件默认提供的是如上图的导航栏样式,即一二级菜单为横向分布:三四级菜单为纵向分布. ...
- 错误:Could not create the Android package. See the Output (Build) window for more details
错误:Could not create the Android package. See the Output (Build) window for more details. Mono For An ...
- Could not apply the stored configuration for monitors
在用户目录下$user.home/.config/monitors.xml,要解决上面的问题,最简单的办法就是删除这个monitors.xml文件,重启一下电脑
- 一个完整的 JS 身份证校验代码
一个完整的 JS 身份证校验代码 身份证号码是由 18 位数字组成的,它们分别表示: (1) 前 1.2 位数字表示: 所在省份的代码; (2) 第 3.4 位数字表示: 所在城市的代码; (3) 第 ...
- 配置自己的ubuntu
终端 zsh 安装zsh apt install zsh 3 安装oh-my-zsh bash -c "$(wget https://raw.githubusercontent.com/ro ...
- 腾讯后台研发暑期实习offer经历
昨晚看到腾讯校招的微信状态,一颗心终于落下来了,终于可以去梦寐以求的鹅厂工作了.想想这一个多月以来,心情就像过山车一样,此起彼伏,一会充满希望,一会又跌入谷底. 三月份的时候,听说腾讯可以内推了,我内 ...
- RE:从零开始的AGC被虐(到)生活(不能自理)
RE:从零开始的AGC被虐(到)生活(不能自理) 「一直注视着你,似近似远,总是触碰不到.」 --来自风平浪静的明天 AtCoder Grand Contest 001 B: Mysterious L ...