Friday, June 13, 2008

Uninstall application from code - C#

For Window CE:

RegistryKey rk = Registry.LocalMachine;
rk = rk.OpenSubKey(@"\SOFTWARE\Apps\Socket Bluetooth OBEX Software",true);
rk.DeleteValue("Instl", false);
rk.DeleteValue("InstlDirCnt", false);
rk.DeleteValue("InstlDir", false);
rk.Close();

rk = Registry.LocalMachine;
rk = rk.OpenSubKey(@"\SOFTWARE\Apps\Socket Bluetooth Software", true);
rk.DeleteValue("Instl", false);
rk.DeleteValue("InstlDirCnt", false);
rk.DeleteValue("InstlDir", false);

rk.Close();

Then check COntrol panel->Remove program, you won't see these 2 socket program.



For PC: ( Not Tested!)


Microsoft.Win32.RegistryKey Fregistry =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE")
.OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion")
.OpenSubKey("Installer").OpenSubKey("UserData")
.OpenSubKey("S-1-5-18").OpenSubKey("Products");
string []Names = Fregistry.GetSubKeyNames() ;
string uninstall = "";
string ApplicationName = "Adobe Reader 7.0.8";
for (int i = 0; i < Names.Length; i++)
{
Microsoft.Win32.RegistryKey FTemp = Fregistry.OpenSubKey(Names[i]).OpenSubKey("InstallProperties");
if (FTemp.GetValue("DisplayName").ToString() == ApplicationName)
{
object obj = FTemp.GetValue("UninstallString");
if (obj == null)
uninstall = "";
else
uninstall = obj.ToString();
i = Names.Length;
}
}

System.Console.WriteLine(uninstall);
System.Diagnostics.Process FProcess = new System.Diagnostics.Process();
string temp = "/x{" + uninstall.Split("/".ToCharArray())[1].Split("I{".ToCharArray())[2];
//replacing with /x with /i would cause another popup of the application uninstall
FProcess.StartInfo.FileName = uninstall.Split("/".ToCharArray())[0];
FProcess.StartInfo.Arguments = temp;
FProcess.StartInfo.UseShellExecute = false;
FProcess.Start();
System.Console.Read();

No comments: