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

通过前面的几篇随笔,我们已经给我们的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学习整理(5)——安装时填写注册表

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

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

    原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注 ...

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

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

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

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

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

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

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

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

  7. NSIS学习记录の----win8.1和win10对于NSIS创建的卸载快捷方式无法在开始目录下显示

    NSIS提供了很好的软件卸载功能编写的方法,但是针对win8.1和win10操作系统,由于开始目录的权限限制,我们有时候并不能完美的完成所需要的功能----卸载程序的快捷方式不能显示.话不多说,下面提 ...

  8. js数组学习整理

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

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

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

随机推荐

  1. java 基于JDK中的源码总结下String二

    申明:转载请注明出处,如有商用目的请务必知会本人,感谢. 上一篇文章:http://blog.csdn.net/ts1122/article/details/8738336,介绍了String一些易错 ...

  2. fzu 2035 Axial symmetry(枚举+几何)

    题目链接:fzu 2035 Axial symmetry 题目大意:给出n个点,表示n边形的n个顶点,判断该n边形是否为轴对称图形.(给出点按照图形的顺时针或逆时针给出. 解题思路:将相邻两个点的中点 ...

  3. 64位win7旗舰版搭建apache+php+mysql开发环境[转]

      我建议把apache.php.mysql都安装在一个文件夹中,比如:web/apache.web/php.web/mysql 1.安装apache2.2.25,请查看win7下安装VC9版本的ap ...

  4. 一百多道.NET面试题!

    1.a=10,b=15,在不用第三方变量的前提下,把a,b的值互换 方法一: a=a+b;  b=a-b;  a=a-b;  方法二: a^=b^(b^=a^b);  2.已知数组int[] max= ...

  5. Servlet的学习(一)

    初识Servlet Servlet是一门专门用于开发动态web资源的技术,Sun公司在其API中提供了一个Servlet接口(当然,我们不会去直接实现这个接口,而是去继承其实现类会更好),因此,狭义的 ...

  6. DataReader,DataTable利用泛型填充实体类

    using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary ...

  7. UltraEdit配置python和lua环境

    [语法高亮] 在UltraEdit的wordfile中添加python和lua的语法支持(红色的为python,蓝色的为lua): /L10"Python" Line Commen ...

  8. 汉字转拼音再转ASCII

    汉字能够转成拼音.能够在转成ASCII码,然后就能够转成十六进制数,再就能够转成0和1组成的二进制帧了! 比方说: 我爱你 -> wo ai ni -> 119 111 32 97 105 ...

  9. webpack React+ES6

    webpack踩坑之路——构建基本的React+ES6项目   webpack是最近比较火的构建工具,搭配上同样比较火的ReacJS与ES6(ES2015)一定是现在很多潮流 programmer 的 ...

  10. 设计模式(三)-- 适配器模式(Adapter)

    适配器模式(Adapter) 考虑一个记录日志的应用,由于用户对日志记录的要求很高,使得开发人员不能简单地采用一些已有的日志工具或日志框架来满足用户的要求,而需要按照用户的要求重新开发新的日志管理系统 ...