自动化测试之自动卸载软件

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

  阅读目录

  用msiexec 命令来卸载软件

  注册表中查找ProductCode

  C#中自动卸载软件

  C#查找注册表中的ProductCode

  完整源代码下载

  用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;

}

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-30 15:27:12

自动化测试之自动卸载软件的相关文章

有些软件不能卸载怎么办,系统自动卸载软件

  我们使用360软件如图卸载软件 但在点击了卸载没有反应,这时我们就去电脑的[开始]那里搜索 在搜索结果里点击需要卸载的软件 点击卸载软件,再点击[继续]就可卸载掉这款软件.

腾讯电脑管家怎么卸载软件?

  目前,很多网友下载腾讯电脑管家使用,保护电脑的安全.不过,一些软件使用过一段时间之后,一些网友觉得使用次数比较少,或者不好用,就需要通过腾讯电脑管家把软件卸载了,那么,该怎么卸载软件呢?一起来了解一下今天的腾讯电脑管家卸载软件教程吧,文末附上腾讯电脑管家升级软件教程,希望大家喜欢! 软件卸载: 1.安装电脑管家后,点击打开软件. 2.点击界面中的"软件管理"选项. 3.点击"卸载",进入软件卸载界面. 4.可以先查询都有些什么软件,再确定卸载哪些软件. 5.在导

Win7系统卸载软件时提示找不到指定模块如何解决

  我们在电脑的日常维护中,有时候有的软件用不到,或者很少用,所以就想把它卸载掉.最近使用Win7系统的用户,在卸载软件的过程中遇到"无法卸载,找不到指定模块"的问题.问要如何解决这个问题?下面就和大家介绍一下Win7卸载软件时提示找不到指定模块的解决方法. 具体方法如下: 方法一:电脑清理法 1.打开电脑安装的安全软件(这里以360为例),点击"电脑清理". 2.进入后找到"清理注册表"这项,然后在这项上打上勾. 3.然后等待扫描,扫描完成后清

苹果电脑如何完全卸载软件?

  Mac如何完全卸载软件?很多使用Mac的朋友都知道如何卸载已安装的软件,一般情况下,绝大部分 Mac OS X 系统的应用程序都是以资源包的形式存在 Mac 设备里的,这些资源包都是独立存在的,只要将应用程序图标拖曳到废纸篓就能完成卸载.但是,并不是所有应用程序的卸载都这么轻松愉快的.有些应用程序中包含有偏好设置文件以及程序支持文件,前者往往会占用很小一部分空间,后者所占空间的大小则取决于安装的应用程序.这些文件很容易残留在我们的Mac里,占用硬盘空间.那么我们改如何完全删除掉这些文件残留呢

完全指南之在 Ubuntu 操作系统中安装及卸载软件

当你从 Windows 系统转向 Linux 系统的时候,刚开始的体验绝对是非比寻常的.在 Ubuntu 系统下就连最基本的事情,比如安装个应用程序都会让(刚从 Windows 世界来的)人感到无比困惑. 但是你也不用太担心.因为 Linux 系统提供了各种各样的方法来完成同样的任务,刚开始你感到困惑那也是正常的.你并不孤单,我们大家都是这么经历过来的. 在这篇初学者指南中,我将会教大家在 Ubuntu 系统里如何以最常用的方式来安装软件,以及如何卸载之前已安装的软件. 关于在 Ubuntu 上

告别卸载软件难 四大方法轻松搞定

我们常会遇到一些永远不会使用的原装软件,这些软件占据着你的系统空间,但是却像狗皮膏药一样赖着不走.前些日的苹果IOS10更新后,很多人都卸载了邮件等部分APP,而近日,被誉为"全家桶"的windows系统也推出了最新更新,在Windows 10预览版14936中,用户可以卸载部分系统自带软件(支持手机和电脑). 告别卸载软件难 四大方法轻松搞定 责任编辑:editor004 作者:鲁畅 |  2016-10-10 10:48:34 本文摘自:中关村在线 我们常会遇到一些永远不会使用的原

《Raspberry Pi用户指南》——2.7 安装和卸载软件

2.7 安装和卸载软件 Raspberry Pi用户指南 Debian发行版中默认安装的软件,就足以让你使用,但是你还将要根据自己的需要自定义你的个人信息. 新的软件安装到派很简单.Debian发行版包含了一个叫 apt的工具,这是一个功能强大的软件包管理器. 虽然在命令行中安装软件也是简单易行的,但终不如GUI下安装软件来得更方便,如使用广受欢迎的新立得软件包管理器安装软件,但这种做法对内存要求较高,往往因为缺少内存而无法运行.因此,我们建议在终端上安装软件. 其他发行版 Debian和基于D

如何在 Ubuntu 操作系统中安装及卸载软件

当你从 Windows 系统转向 Linux 系统的时候,刚开始的体验绝对是非比寻常的.在 Ubuntu 系统下就连最基本的事情,比如安装个应用程序都会让(刚从 Windows 世界来的)人感到无比困惑. 但是你也不用太担心.因为 Linux 系统提供了各种各样的方法来完成同样的任务,刚开始你感到困惑那也是正常的.你并不孤单,我们大家都是这么经历过来的. 在这篇初学者指南中,我将会教大家在 Ubuntu 系统里如何以最常用的方式来安装软件,以及如何卸载之前已安装的软件. 关于在 Ubuntu 上

VB.NET中调用MSI卸载软件的2个方法_vb.net

最近在折腾组里面的那个破Lab,要自己写程序每天安装最新版本的build.而今天手头上没有任何任务,所以把用到的一些东西记下来以供今后参考.这篇日志来记录如何在.NET中卸载别的软件. 一.直接使用MSI安装包 如果你知道MSI安装程序的路径,那么显然可以直接使用即可: 复制代码 代码如下: msiexec /x "C:Table Manager Clients.msi" /quiet /qn /quiet参数表示自动卸载,/qn表示 显示任何UI. 这个方法很简单,推荐使用.但是如果