C#_自動化測試 (四) 自動卸載軟體

來源:互聯網
上載者:User

標籤:style   blog   http   java   color   os   io   art   

在平常的測試工作中,經常要安裝軟體,卸載軟體,  即繁瑣又累。  安裝和卸載完全可以做成自動化。 安裝軟體我們可以通過自動化架構,自動點擊Next,來自動安裝。  卸載軟體我們可以通過msiexec命令列工具自動化卸載軟體

 

閱讀目錄

  1. 用msiexec 命令來卸載軟體
  2. 註冊表中尋找ProductCode
  3. C#中自動卸載軟體
  4. C#尋找註冊表中的ProductCode
  5. 完整原始碼下載

 

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

 

完整的原始碼下載

 點擊此處下載完整原始碼, 請用vs2010以上開啟

 

附: 自動化測試 系列教程, (連載中, 敬請期待)

自動化測試 (一) 12306火車票網站自動登入工具

自動化測試 (二) 連連看外掛

自動化測試 (三) Web自動化測試原理

自動化測試 (四) 自動卸載軟體

自動化測試 (五) 讀寫64位作業系統的註冊表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.