原文: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

将文件保存为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)——安装快捷方式的更多相关文章

  1. Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式

    原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些 ...

  2. Wix学习整理(5)——安装时填写注册表

    原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信 ...

  3. Wix学习整理(2)——HelloWorld安装添加UI

    原文:Wix学习整理(2)--HelloWorld安装添加UI 在前一篇随笔Wix学习整理(1)——快速入门HelloWorld中,我们制作的安装包安装界面太简单,没有与用户进行交互的过程.下面我们修 ...

  4. Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析

    原文:Wix学习整理(4)--关于WiX文件格式和案例HelloWorld的分析 关于WiX文件格式 .wxs是WiX的源文件扩展名..wxs文件以类XML文件的格式来指定了要构造Windows In ...

  5. Wix学习整理(3)——关于Windows Installer和MSI

    原文:Wix学习整理(3)--关于Windows Installer和MSI 关于Windows Installer Windows Installer是微软Windows操作系统自带的一个软件安装和 ...

  6. Wix学习整理(1)——快速入门HelloWorld

    原文:Wix学习整理(1)--快速入门HelloWorld 1 Wix简介 Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Instal ...

  7. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  8. TweenMax学习整理--特有属性

    TweenMax学习整理--特有属性   构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓 ...

  9. HttpClient学习整理

    HttpClient简介HttpClient 功能介绍    1. 读取网页(HTTP/HTTPS)内容    2.使用POST方式提交数据(httpClient3)    3. 处理页面重定向    ...

随机推荐

  1. Swift - 使用CATransition制作过渡动画(页面切换转场效果)

    CATransition动画主要在过渡时使用,比如两个页面层级改变的时候添加一个转场效果.CATransition分为两类,一类是公开的动画效果,一类是非公开的动画效果. 1,公开动画效果: kCAT ...

  2. ubuntu 常用软件

    terminator:任意分割控制台 Sublime Text:文本编辑器,也是轻量级的IDE Wireshark:抓包工具 Okular:PDF等文档编辑工具 yEd:流程图等制图软件 Shutte ...

  3. 一次完整的HTTP请求所经历的7个步骤(前三步是浏览器工作,后四步是服务器工作)

    HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连 ...

  4. hdc和hwnd的区别

    句柄概念在WINDOWS编程中是一个很重要的概念,在许多地方都扮演着重要的角色.但由此而产生的句柄概念也大同小异,比如:<<Microsoft   Windows   3   Develo ...

  5. Oracle安装配置流程

    Oracle安装流程 第一次自己动手安装oracle,之前对oracle安装配置一窍不通,最后最终弄好.总结下. 1.  安装oracle10gserver端 2.  安装oracle10gclien ...

  6. linux公社的大了免费在线android资料

    2011年linux数据库的android在线分享 linux公社:开源公社             本文撰写:杨凯专属频道 2011年9月12日 21:39 <目录> Android 3 ...

  7. QNX 多线程 (线程1每隔20ms读取 number;线程2每隔10ms计算一次)

    #include <pthread.h>#include <stdio.h>#include <sys/time.h>#include <string.h&g ...

  8. Jexus + Kestrel 部署 asp.net core

    结合Jexus + Kestrel 部署 asp.net core 生产环境 ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依 ...

  9. 与众不同 windows phone (5) - Chooser(选择器)

    原文:与众不同 windows phone (5) - Chooser(选择器) [索引页][源码下载] 与众不同 windows phone (5) - Chooser(选择器) 作者:webabc ...

  10. JS-JavaScript学习笔记(一)

    javaScript 1.文档的输出:document.write() 可输出字符,表达式,html标签.函数 2.不论什么类型和字符串相加,都会被转换成字符串类型. 比如:var i=5; var ...