Wix学习整理(6)——安装快捷方式
一 为HelloWorld案例添加安装快捷方式
通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问。现在我们就在上篇添加注册信息的基础上为HelloWorld的安装包添加安装快捷方式。下面我们将以安装开始菜单快捷方式为实例详细地阐述一下Wix的关于安装快捷方式的基础知识。
首先,我们要定义好目录结构。
开始菜单快捷方式的安装目录结构与应用软件的实际安装目录结构不一样。
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="HelloWorld" />
</Directory>
ProgramMenuFolder是Windows Installer预定义的一个属性,其值为目标机器的开始菜单目录。Id为TARGETDIR的<Directory>必须是唯一的根目录,于是第一个<Directory>就放在该根目录下面。第二个<Directory>是在开始菜单目录下创建一个名为HelloWorld的子目录。
接下来,就开始注明我们的快捷方式信息。
下面这小片段就是安装开始菜单快捷方式的Wix代码。
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="ApplicationShortcut" Guid="68485251-0D3B-4EFC-8792-A721D4AE8AB7">
<Shortcut Id="StartMenuShortcut"
Name="HelloWorld.exe"
Description="My HelloWorld"
Target="[INSTALLFOLDER]HelloWorld.exe"
WorkingDirectory="INSTALLFOLDER" />
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\Microsoft\HelloWorld"
Name="StartMenuShortcut" Type="integer" Value="1" KeyPath="yes" />
</Component>
</DirectoryRef>
<DirectoryRef>元素引用了我们在开始菜单目录下定义的子目录HelloWorld,表明我们要安装的快捷方式就放在该HelloWorld子目录下。然后通过一个<Component>来包含我们的快捷方式(记得Component是Windows Installer安装的最小单元)。
通过<Shortcut>元素,我们就指定了我们要创建的快捷方式的信息。Name指定了快捷方式的名字;Description指定了快捷方式的描述信息,当鼠标移到该快捷方式上时,其会以ToolTip方式显示;Target指定了快捷方式引导的目标文件,其中[INSTALLFOLDER]解析出Id为INSTALLFOLDER的<Directory>所指向的目标目录的路径,所以本快捷方式将引导路径C:\Program Files\HelloWorld\下的HelloWorld.exe文件;WorkingDirectory则指定了该快捷方式的工作目录。
另外,如果我们想更改快捷方式的图标,我们需要通过一个<Icon>元素加载一个图标文件,然后通过<Shortcut>元素的Icon属性引用该图标文件即可。
<RemoveFolder>元素表明在卸载HelloWorld这个应用程序时(On=”uninstall”)将删除Id为ApplicatioinProgramsFolder的目录(即我们在开始菜单目录下创建的子目录HelloWorld)。
<RegistryValue>元素指定了一个在创建快捷方式时注册到注册表的信息。这是创建快捷方式时必需的元素,因为快捷方式不能作为一个Component的KeyPath。
关于在桌面创建快捷方式的内容与上面差不多,在这里就不多费敲键盘的手力了。
最后,我们需要将Component放到一个Feature中安装。
为了顺道展示一下Feature树,在这里我们将创建开始菜单快捷方式和桌面快捷方式放在一个单独的Feature。
<Feature Id="ShortcutFeature" Title="Shortcut" Level="1">
<Feature Id="StartMenuShortcutFeature" Title="StartMenuShortcut" Level="1">
<ComponentRef Id="ApplicationShortcut" />
</Feature>
<Feature Id="DesktopShortcutFeature" Title="DesktopShortcut" Level="1">
<ComponentRef Id="DesktopShortcutComponent" />
</Feature>
</Feature>
然后,我们需要设置WixUI为WixUI_FeatureTree。
<UIRef Id="WixUI_FeatureTree" />
完整的Wix源文件
下面是一个完整Wix源文件。
将文件保存为Product.wxs,然后通过candle编译和light链接,
candle Product.wxs
light Product.wixobj –out HelloWorld.msi –ext "C:\Program Files\WiX Toolset v3.6\bin\WixUIExtension.dll"
就生成我们HelloWorld的安装包HelloWorld.msi文件了。
二 验收我们的成果
双击.msi文件,在协议界面同意了协议并点下一步,我们就看到下面这样的一个安装界面,

看到Feature树了吧。安装成功后,在开始菜单和桌面都会看到命名为HelloWorld.exe的快捷方式了(虽然图标有点挫,不过我们成功了)。

来,动手试试吧,感觉会很不一样的噢!
Wix学习整理(6)——安装快捷方式的更多相关文章
- Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式
原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些 ...
- Wix学习整理(5)——安装时填写注册表
原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信 ...
- Wix学习整理(2)——HelloWorld安装添加UI
原文:Wix学习整理(2)--HelloWorld安装添加UI 在前一篇随笔Wix学习整理(1)——快速入门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 ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- TweenMax学习整理--特有属性
TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓 ...
- HttpClient学习整理
HttpClient简介HttpClient 功能介绍 1. 读取网页(HTTP/HTTPS)内容 2.使用POST方式提交数据(httpClient3) 3. 处理页面重定向 ...
随机推荐
- Endnote从头开始五:修改output style(转载)
Endnote从头开始五:修改output style Endnote中虽然有大量的期刊格式,但是并不能囊括所有我们需要的style,所以学会自己制作或编辑已有的期刊格式是很重要的,本节内容是Endn ...
- Delphi中MethodAddress汇编代码的解析
class function TObject.MethodAddress(const Name: ShortString): Pointer;asm { -> EAX ...
- Streaming编程实例(c,c++,python等)
1.概述 Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为ma ...
- [置顶] PMBOOK第四版-ITO与数据流图总结
具体文档下载地址: 点击打开文档下载地址 :http://download.csdn.net/detail/lyjluandy/6694205 一.过程组与知识领域表(简图) 二.输入 - 工具 - ...
- SetWindowLong
SetWindowLong函数介绍 收藏 SetWindowLong函数介绍 SetWindowLong Unicode 函数原型 LONG SetWindowLong(hwnd,nIndex,lNe ...
- HashSet的排序
import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util ...
- FairScheduler的任务调度机制——assignTasks
首先需要了解FairScheduler是如何在各个Pool之间分配资源,以及每个Pool如何在Job之间分配资源的.FairScheduler的分配资源发生在update()方法中,而该方法由一个线程 ...
- ListCtrl控件着色
最近在写一款山寨的反病毒软件,大致功能已经实现,还有一些细小的环节需要细化. 其中,在界面编程中,就用到了给ListCtrl控件着色,查看了网上一些文章,终于实现了. 其实说白了,原理很简单,就是Li ...
- ThinkPHP 3 的CURD管理用户信息 修改和删除
本节课大纲: 一.ThinkPHP 3 的CURD管理用户信息 http://localhost:8080/thinkphp/index.php/User/index 访问User类的index方法 ...
- 我们熟悉的Textbox
创建只读文本框 方法一: 可用Readonly属性防止用户编辑文本框内容.将Readonly属性设置为True后,用户就可以滚动文本框中的文本并将其突出显示,但不能作任何更改.将Readonly属性设 ...