通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式。这些在安装时添加的内容,在卸载时也会自动地删除。但是,到目前为止,我们的卸载只有两种方式:通过原始安装包或控制面板中的卸载或更改程序。现在,我们来学习Wix如何为我们的HelloWorld在安装时在开始菜单中提供卸载的快捷方式。

一 添加卸载快捷方式

添加卸载的快捷方式也是通过<Shortcut>元素来实现的,关于如何添加快捷方式的更多详情,请参考本系列上一篇,在这里我们就讲讲添加卸载快捷方式的<Shortcut>元素的具体内容。

<Shortcut Id="UninstallHelloWorld"Name="Uninstall"Target="[SystemFolder]msiexec.exe"Arguments="/x [ProductCode]"Description="Uninstall HelloWorld" />

其中,Target指出了可运行程序msiexec.exe的位置,msiexec.exe是Windows Installer提供的客户端安装卸载程序服务。SystemFolder是Windows Installer预定义的属性,其值表示目标机器的System32文件夹所在路径,通常为C:\Windows\System32。Argument将安装包的ProductCode传递给msiexec.exe,告知要卸载的是哪一个产品。

完整的WiX源文件请看下面的Product.wxs,

Product.wxs

通过运行编译和链接命令,

candle Product.wxs
light Product.wixobj –out HelloWorld.msi –ext "C:\Program Files\WiX Toolset v3.6\bin\WixUIExtension.dll"

就生成了我们的HelloWorld.msi安装包文件。

二 验收我们的成果

双击HelloWorld.msi文件,安装HelloWorld。安装完成后,在开始菜单的所有程序下的HelloWorld目录下就看到一个命名为Uninstall的卸载快捷方式,如下图所示,

单击Uninstall快捷方式,就可以快捷地卸载我们安装的HelloWorld了。然后,你再去查看一下注册表中安装时填写的信息以及安装的开始菜单快捷方式和桌面快捷方式是否都已被删除。

是的,我们要做到无残留卸载!

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

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

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

  2. Wix学习整理(6)——安装快捷方式

    一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注册信息的基础上为HelloWorld的安装包 ...

  3. HTML CSS 学习整理

    HTML CSS 学习整理 码字不易,转载请务必注明原文出处.常用单位整理,不断学习,后期的新增笔记会继续加到文章上方 点击链接后退页面: 回到上一个网页 这是一个简单的跳转页面操作 --修改plac ...

  4. docker学习整理

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

  5. 学习整理在php中使用KindEditor富文本编辑器

    学习整理在php中使用KindEditor富文本编辑器 1.下载编辑器 2.部署kindeditor编辑器 3.在html页面里引入编辑器 4.Ajax提交表单时获取不到 KindEditor 内容 ...

  6. Java设计模式(学习整理)---命令模式

    设计模式之Command(学习整理) 1.Command定义 不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作. 将这些命令封装 ...

  7. 2019.07.30 学习整理

    2019.07.30 学习整理 数据类型 1. 什么是数据类型 数据类型指的就是变量值的不同类型 2. 为何对数据分类? 变量的是用来反映状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数 ...

  8. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

  9. Elastic Nodes Example 翻译及学习整理

    文章目录 Elastic Nodes Example 翻译及学习整理 题记: 简介: Node Class Definition Edge Class Definition GraphWidget C ...

最新文章

  1. 4篇SCI,1篇A类期刊,这位复旦博士生分享自身科研经验
  2. ***Xcode Interface Builder或Storyboard中可建立那两种连接?
  3. ABAP WebService SRT框架的初始值处理
  4. 图论--最短路-- Dijkstra模板(目前见到的最好用的)
  5. java 框架mvc_JAVA框架-MVC模式
  6. 数据库alter用法总结
  7. Jenkins持续集成环境, 如何自定义 maven repositories
  8. 【bzoj1047】[HAOI2007]理想的正方形 二维RMQ
  9. SQL Server 2005 14420 14421错误
  10. c 运算符重载前置++_C ++运算符重载–综合指南
  11. maple 2018 窗口关闭提示乱码_Stata15:一次性转码,解决中文乱码问题
  12. php图文编辑,ThinkPHP整合百度Ueditor编辑器的图文教程
  13. Nacos 日志文件堆满磁盘空间处理方案
  14. 本经阴符七术--鬼谷子
  15. 网管必修课 中小企业安全路由器配置
  16. 红米手机TWRP读不了刷机包成功解决记录
  17. 【区块链108将】BKFUND许超逸:Token为基金管理行业带来新的空白市场机会
  18. 【人工智能 AI 】当前世界人工智能领域发展最前沿的技术
  19. C语言之指针知识大总结
  20. “===”、“==” 的区别

热门文章

  1. SAP MM ME55 不能批量审批部分多个PR?
  2. 干货丨区块链如何改变人工智能(AI)?
  3. 第一次,人类在人工神经网络中发现了“真”神经元
  4. 《中国基础研究竞争力报告2020》发布,6图表速览报告核心结论
  5. 大脑进化追不上社会文化:化石和脱氧核糖核酸证明人类大脑进化比社会慢
  6. 可持续发展的人工智能
  7. 国内大陆芯片70个细分领域重要代表企业!
  8. 结构化数据不应该被人工智能忘之脑后 !
  9. 理论计算机科学中最令人困惑的谜题之一被解开
  10. 网络安全:等保2.0落地在即,触发五百亿新增市场