C# UnInstall Application by name.

来源:互联网 发布:淘宝网店推广方法与营销技巧 编辑:程序博客网 时间:2024/06/01 09:44
代码
public void UninstallGenWFM()
        {
            
string strReturnMsg;
            
string productGuid;
            
string subKey;
            
string displayName;
            
string strMajVersion;
            
string strGenBuildNum;
            
string strLocalInsFolder;
            
string uninstallCmd;
            
string strUnistallCmdLine;
            strUnistallCmdLine 
= uninstallCmd = strLocalInsFolder = strMajVersion = displayName = subKey = productGuid = strReturnMsg = string.Empty;
        

        public const string STRBIT32 = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";

        public const string STRBIT64 = "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall";


            if (rkLocalMachine != null)
            {

                rkUninstalls = rkLocalMachine.OpenSubKey(STRBIT32); // Uninstall Gen build from 32bit WinOS.
                uninstallKeys = rkUninstalls.GetSubKeyNames();      // Get all install keys.
                foreach (string uninstallKey in uninstallKeys)
                {
                    
if (uninstallKey.Length > 14)
                    {
                        
string installShield = uninstallKey.Substring(014);
                        
if (installShield == "InstallShield_")     // If it is a shield key.
                        {
                             productGuid 
= uninstallKey.Substring(14);  // Get the pid.
                             subKey 
= strKeyCurrent + "\\" + uninstallKey;
                            RegistryKey rkUninstallKey 
= rkLocalMachine.OpenSubKey(subKey); // Open subkey list in regist.
                            
if (rkUninstallKey != null)
                            {
                                
//Geneva Workflow Manager for ACA
                                 displayName = (String)rkUninstallKey.GetValue("DisplayName", String.Empty);
                                 
if (displayName.Length >= 25 && displayName.Substring(031== "Geneva Workflow Manager for ACA")
                                 {
                                     
string displayVersion = (String)rkUninstallKey.GetValue("DisplayVersion", String.Empty);
                                     strReturnMsg 
= "Found installed product: " + displayName + ", Version: " + displayVersion + "+";
                                     
// Write to log file.
                                     oLOG.WRITELOG(strReturnMsg);

                                     strMajVersion 
= this.strGenVersion.Substring(05);
                                     
if (displayVersion != strMajVersion)
                                     {
                                         uninstallCommand 
= (String)rkUninstallKey.GetValue("UninstallString", String.Empty);
                                         strReturnMsg 
= "+++++Prepare to uninstall this build !+";
                                         
// Write to log file.
                                         oLOG.WRITELOG(strReturnMsg);
                                     }
                                 }
                            }
                        }
                    }
                }
                
if (uninstallCommand != string.Empty)
                {
                    
try
                    {
                        strGenBuildNum 
= this.strGenVersion.Substring(64); // Get the Geneva application build number.
                        strGenVersion = strGenVersion.Replace(".""_");
                        
string copyLocalFolder = "copyLocalFolder";
                        
string uninstallLogFile = Path.Combine(copyLocalFolder, "uninstall_" + this.strGenVersion + ".txt");
                        
int iFindCommand = uninstallCommand.IndexOf("-runfromtemp");
                        uninstallCmd 
= uninstallCommand.Substring(0, iFindCommand - 1);
                        strUnistallCmdLine 
= uninstallCommand.Substring(iFindCommand);
                        strUnistallCmdLine 
= (" /uninst /verbose\"" + uninstallLogFile);
                        string issfile = Path.Combine(copyLocalFolder, "uninstall.iss");

                        Process pUninstall 
= new Process();
                        pUninstall.StartInfo.FileName 
= uninstallCmd;
                        pUninstall.StartInfo.Arguments 
= strUnistallCmdLine;

                        EventLog.WriteEntry(
"A1", uninstallCmd);
                        EventLog.WriteEntry(
"A2", strUnistallCmdLine);
                        pUninstall.Start();
                        pUninstall.WaitForExit();
                    }
                    
catch (Exception xe)
                    {
                        strReturnMsg 
= " Has an Error !" + xe.Message + "+";
                        
// Write to log file.
                        oLOG.WRITELOG(strReturnMsg);
                    }
                    
                }
                
else {
                    strReturnMsg 
= " No Geneva Application be installed ! +";
                    
// Write to log file.
                    oLOG.WRITELOG(strReturnMsg);
                }
                
            }
            
else
            {
                strReturnMsg 
= "Can not get the regedit message from server! +";
                
// Write to log file.
                oLOG.WRITELOG(strReturnMsg);
            }

            Console.WriteLine(strReturnMsg);
        }