在平常的测试工作中,经常要安装软件,卸载软件, 即繁琐又累。 安装和卸载完全可以做成自动化。 安装软件我们可以通过自动化框架,自动点击Next,来自动安装。 卸载软件我们可以通过msiexec命令行工具自动化卸载软件

用msiexec 命令来卸载软件

平常我们手动卸载软件都是到控制面板中的"添加/删除"程序中去卸载软件, 或者通过程序自带的卸载软件来卸载。

我们可以通过 MsiExec.exe /X{ProductCode} 命令来卸载程序。

关于MsiExec.exe 请看 http://technet.microsoft.com/zh-cn/library/cc759262%28v=WS.10%29.aspx

注册表中查找ProductCode
ProductCode是Windows 安装程序包的全局唯一标识符 (GUID), 我们可以通过注册表来获取ProductCode

实例: 用MsiExec.exe 自动卸载Xmarks.

Xmarks 是一个用来同步收藏夹的工具, 我平常用来同步IE,firefox,chrome的收藏夹。

先用注册表打开如下位置,

32位操作系统: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

注意: 如果是64位操作系统:

64位的程序还在: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

32位的程序而是在: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\

Uninstall下面的注册表子键很多, 你需要耐心地一个一个去查找"DisplayName", 从而找到程序的ProductCode, 如下图。

从注册表中我们找到UninstallString这个键值: MsiExec.exe /X{C56BBAC8-0DD2-4CE4-86E0-F2BDEABDD0CF}, 那么ProductCode就是{C56BBAC8-0DD2-4CE4-86E0-F2BDEABDD0CF}

我们可以通过 MsiExec.exe /X{ProductCode} 命令来卸载程序.

那么卸载的命令应该为 MsiExec.exe /X{C56BBAC8-0DD2-4CE4-86E0-F2BDEABDD0CF}

然后在CMD中直接调用这个命令, 会弹出一个对话框,点击"是" 后, 软件就能被卸载了。


在自动化测试中,我们不想弹出这个对话框,而是希望直接卸载。同时也不希望系统重启 只要加个两个参数 /quiet /norestart 就可以了

现在的卸载的命令是: MsiExec.exe /X{C56BBAC8-0DD2-4CE4-86E0-F2BDEABDD0CF} /quiet

C#中卸载程序

C#的卸载代码比较简单, 当然你也可以用其他语言。

        Process p = new Process();p.StartInfo.FileName = "msiexec.exe";p.StartInfo.Arguments = "/x {C56BBAC8-0DD2-4CE4-86E0-F2BDEABDD0CF} /quiet /norestart";p.Start();

C#查找注册表中的ProductCode

最麻烦的在于,如何到注册表中获取ProductCode。 如果做非Web程序的自动化测试,经常需要跟注册表打交道。

代码为:

复制代码public static string GetProductCode(string displayName){string productCode = string.Empty;// 如果是32位操作系统,(或者系统是64位,程序也是64位)string bit32 = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";// 如果操作系统是64位并且程序是32位的string bit64 = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";RegistryKey localMachine = Registry.LocalMachine;RegistryKey Uninstall = localMachine.OpenSubKey(bit32, true);foreach (string subkey in Uninstall.GetSubKeyNames()){RegistryKey productcode = Uninstall.OpenSubKey(subkey);try{string displayname = productcode.GetValue("DisplayName").ToString();if (displayname == displayName){string uninstallString = productcode.GetValue("UninstallString").ToString();string[] strs = uninstallString.Split(new char[2] { '{', '}' });productCode = strs[1];return productCode;                    }}catch { }}return productCode;}

最后:下方这份完整的自动化测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

自动化测试 ——自动卸载软件相关推荐

  1. C#_自动化测试 (四) 自动卸载软件

    在平常的测试工作中,经常要安装软件,卸载软件,  即繁琐又累.  安装和卸载完全可以做成自动化. 安装软件我们可以通过自动化框架,自动点击Next,来自动安装.  卸载软件我们可以通过msiexec命 ...

  2. 自动化测试 (四) 自动卸载软件

    在平常的测试工作中,经常要安装软件,卸载软件,  即繁琐又累.  安装和卸载完全可以做成自动化. 安装软件我们可以通过自动化框架,自动点击Next,来自动安装.  卸载软件我们可以通过msiexec命 ...

  3. 魅族手机自动卸载软件

    魅族手机有毒啊, 魅蓝手机 下载kingRoot app卸载预装软件,竟然自动卸载了kingRoot ??! 这操作看不懂啊~ 话说这预装软件都是些什么玩意,整天给你弹些乱七八糟的东西 ; 反正我是对 ...

  4. C# Winform自动卸载软件

    1.用msiexec 命令来卸载软件 平常我们手动卸载软件都是到控制面板中的"添加/删除"程序中去卸载软件, 或者通过程序自带的卸载软件来卸载. 我们可以通过 MsiExec.ex ...

  5. android程序自动卸载软件,Android应用静默安装和卸载

    App的静默安装和卸载 Android系统本身提供了安装卸载功能,但是api接口是@hide的,不是公开的接口,所以在应用级别 是无法实现静默安装和卸载的,要实现静默安装和卸载需要是系统应用,要有系统 ...

  6. 用Selenium自动化测试时,让ChromeDriver中不显示“正受到自动测试软件控制”

    背景: 在用Selenium做自动化测试的时候,默认ChromeDriver是会提示"Chrom正受到自动测试软件控制"的.如下图这样.但我们有些场景下,不希望这个提示出现.本文探 ...

  7. 电脑控制手机,教你通过脚本实现自动安装、卸载软件

    电脑可以控制手机吗?可以批量控制多台手机吗?当然可以!不仅可以批量控制还可以用脚本方式自动安装.卸载手机上的应用程序.想用脚本的方式自动安装.卸载手机上的应用程序怎么办?很简单,用 Total Con ...

  8. windows自动卸载程序

    管理数百台或数千台计算机,怎么快速自动化卸载程序 MsiExec / GUID方法  (The MsiExec / GUID Method) 使用注册表卸载字符串 在注册表: 只要能够在控制面板--程 ...

  9. 赔腾讯70万,QQ“自动抢红包”软件被判不正当竞争

    你有没有经历过,在群聊中抢红包时总是慢人一步?而有些"潜水"的群员平时从不发言,但一旦有红包出现,他们抢的速度却"快如闪电".你以为这些大神是手速和网速的双爆发 ...

最新文章

  1. 2011年工作总结和展望(下篇)
  2. 【约束布局】ConstraintLayout 屏障 Barrier 约束 ( 简介 | 屏障适用场景 | 位置说明 | 相关属性 | 可视化操作 | 代码示例 | 总结 )
  3. ConcurrentHashMap的源码分析-JDK1.7和Jdk1.8版本的变化
  4. cocos2dx中的背景图层CCLayerColor和渐变图层CCLayerGradient
  5. 洛谷——P1547 Out of Hay
  6. PAT甲题题解-1001. A+B Format (20)-字符串处理,水
  7. 介绍一个快速找出 Visual Studio Code 代码多余空格的扩展 - trailing space
  8. 2017蓝桥杯省赛---java---B---10(k倍区间)
  9. Idea 依赖冲突一分钟解决2种方案
  10. 计算面积的计算机软件,多边形面积算法和填充法开发等轴晶比例计算专用软件-软件工程论文-计算机论文.docx...
  11. cuteftp 9 显示中文乱码
  12. 推荐一款可以免费使用的电脑屏幕监控软件
  13. 超全面总结Vue面试知识点
  14. html页面批量打印EMS快递单,如何批量打印快递单/电子面单?
  15. 多系统启动菜单的修复EasyBoot
  16. 硬盘大于2t能不能装Oracle,硬盘容量超过2t的电脑怎么装系统|硬盘大于2t电脑安装系统教程...
  17. Dapper.Contrib
  18. springboot身体健康诊疗系统毕业设计源码181049
  19. 话说当时晁盖并众人 水浒传
  20. C# QR二维码DEMO

热门文章

  1. 画球大师教你如何画好一个球
  2. 这份算法攻略,我拿到了5个大厂的offer
  3. 汽车之家html隐藏代码,2014宝马520LI刷隐藏成功的代码【亲测】
  4. android 9.0 settings去掉手机套餐项
  5. 泰拉瑞亚服务器账号能不能代入,【图片】【教程】如何开一个属于自己的Terraria服务器【terraria吧】_百度贴吧...
  6. 快手客户端稳定性体系建设
  7. 【Vue 开发实战】实战篇 # 42:如何定制主题及动态切换主题
  8. vue动态切换主题色
  9. 简单分析MTI商城市场前景
  10. 电商运营怎么做数据分析?