一 为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的快捷方式了(虽然图标有点挫,不过我们成功了)。

来,动手试试吧,感觉会很不一样的噢!

转载于:https://www.cnblogs.com/lienhua34/archive/2012/10/20/2731816.html

Wix学习整理(6)——安装快捷方式相关推荐

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

    在前一篇随笔Wix学习整理(1)--快速入门HelloWorld中,我们制作的安装包安装界面太简单,没有与用户进行交互的过程.下面我们修改Wix源文件来给安装程序添加UI. 1 Wix的预定义UI简介 ...

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

    通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些在安装时添加的内容,在卸载时也会自动地删除.但是,到目前为止,我们的卸载只有两种方 ...

  3. Vue-Cli 学习整理【转载】

    Vue-Cli 学习整理 坚果 程序猿/艺术 ​关注他 21 人赞同了该文章 1. vue-cli(vue脚手架)全集 1.1. vue-cli2脚手架 1.1.1. nodejs/npm环境安装 1 ...

  4. OMNeT学习之OMNeT安装与运行

    OMNeT学习之OMNeT安装与运行 前言 本文原创,创作不易,转载请注明!!! 本人为OMNet初学者,如有错误,请不吝请教! 最近学WSN(无线传感器网络),做传感器实验,老师强调了仿真平台Mat ...

  5. python基础系统学习整理,自学者可以参考的不二笔记

    前言 博主自己的python学习整理笔记,基础部分的笔记,当然一定还存在很多不足与纰漏,希望各位可以评论区建议让博主来更新 必备理论概念: 计算机基础概念 python基础概念 编辑器与pip安装与基 ...

  6. MYSQL学习整理(4):函数

    MYSQL零基础小白,梳理学习内容督促自己,也为方便自己日后回忆,也希望可以帮助到网友. 这里推荐宋红康老师的MySQL课程,学习资源(如有侵权请联系删除): MySQL数据库教程天花板,mysql安 ...

  7. php nts安装,PHP语言学习之yum安装方式的php,切换NTS为ZTS版本

    本文主要向大家介绍了PHP语言学习之yum安装方式的php,切换NTS为ZTS版本,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 用 yum安装方式的php,切换NTS为ZTS版本(切 ...

  8. docker学习整理

    Docker学习整理 概述 Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器 ...

  9. R语言入门学习——Rstudio的安装与学习

    R语言入门学习--Rstudio的安装与学习 1.Rstudio下载 2.Rstudio安装 3.Rstudio功能和简单程序 1.Rstudio下载 下载地址:https://rstudio.com ...

最新文章

  1. 剖析Elasticsearch集群系列第三篇 近实时搜索、深层分页问题和搜索相关性权衡之道...
  2. vue循环渲染子组件视图不更新问题
  3. Linux7改运行级别,Centos7.0修改系统运行级别
  4. 如何看待蒂姆·库克在苹果的地位
  5. Tensorflow关于Dataset的一般操作
  6. android 压缩多个文件,Android下文件的压缩和解压(Zip格式)
  7. ibatis_HelloWorld
  8. Cassandra 之旅 (二) Getting Started
  9. jdk帮助文档的获取
  10. 2021全国电赛H题回顾
  11. HTML+CSS 模仿淘宝部分网页(未实现事件)
  12. 用谷歌浏览器模拟打开天眼查网站并爬取需要的数据
  13. halcon之屌炸天的变形匹配(1)
  14. 我的前端“先行”之路
  15. “少年派”生命里的上帝与野兽
  16. windows server2012计算机管理“系统工具”里面没有“本地用户和组”怎么办?
  17. 【论文笔记】Radatron: Accurate Detection Using Multi-Resolution Cascaded MIMO Radar
  18. centos 5.2自动安装的php不支持mysql?
  19. 石英晶振的发展趋势及应用
  20. Markdown书写软件Typora的使用--入门(基本操作)

热门文章

  1. 将机器学习模型部署为REST API
  2. 浅谈搜狗下拉词框优化推广的优势有哪些
  3. xshell对mysql的备份与恢复_windows下mysql全备份及还原(亲测可用)
  4. 11g Rac 服务介绍
  5. [转载]无线通信系统中的调制解调基础(一):AM和FM
  6. 期盼数月的召唤|PaddlePaddle中文文档利剑来袭
  7. 9.linux ntp服务器搭建
  8. 使用JMeter建立接口测试
  9. windows下Qt5.4.2 for android开发环境配置
  10. rsync+inotify 实现数据实时同步