我尝试this,this以编程方式卸载应用程序。我没有收到任何错误或异常但是我的机器上没有卸载应用程序。请参阅尝试过的代码
public static string GetUninstallCommandFor(string productDisplayName)
{
RegistryKey localMachine = Registry.LocalMachine;
string productsRoot = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products";
RegistryKey products = localMachine.OpenSubKey(productsRoot);
string[] productFolders = products.GetSubKeyNames();
foreach (string p in productFolders)
{
RegistryKey installProperties = products.OpenSubKey(p + @"\InstallProperties");
if (installProperties != null)
{
string displayName = (string)installProperties.GetValue("DisplayName");
if ((displayName != null) && (displayName.Contains(productDisplayName)))
{
string uninstallCommand =(string)installProperties.GetValue("UninstallString");
return uninstallCommand;
}
}
}
return "";
}
请帮我用C#以编程方式卸载应用程序。
答案 0 :(得分:3)
上面的例程将返回一个字符串,假设它找到了一个匹配的结果:
MsiExec.exe /X{02DA0248-DB55-44A7-8DC6-DBA573AEEA94}
您需要将其作为一个过程运行:
System.Diagnostics.Process.Start(uninstallString);
注意它可能不总是msiexec,它可以是程序选择指定的任何内容。如果是msiexec,您可以将/q
参数附加到uninstallString
以使其静默卸载(并且它不会显示那些修复/删除对话框)。
更新:如果您使用的是Windows Installer 3.0或更高版本,则还可以使用/quiet
进行静默安装/卸载。它与/qn
基本相同(如果您使用的是旧版本)。 Source。感谢@JRO推出它!