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

Posted 程序员二黑.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试 ——自动卸载软件相关的知识,希望对你有一定的参考价值。

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

用msiexec 命令来卸载软件

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

我们可以通过 MsiExec.exe /XProductCode 命令来卸载程序。

关于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 /XC56BBAC8-0DD2-4CE4-86E0-F2BDEABDD0CF, 那么ProductCode就是C56BBAC8-0DD2-4CE4-86E0-F2BDEABDD0CF

我们可以通过 MsiExec.exe /XProductCode 命令来卸载程序.

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

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


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

现在的卸载的命令是: MsiExec.exe /XC56BBAC8-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%免费】

以上是关于自动化测试 ——自动卸载软件的主要内容,如果未能解决你的问题,请参考以下文章

bat静默卸载指定软件

怎样用批处理自动卸载软件

如何卸载自动推送的 Microsoft Edge 浏览器?

appium卸载问题

笔记本电脑一直弹出Microsoft Office Professional Plus 2010该怎么解决?

启动idea,桌面自动生成三个日志文件是怎么会使