如何以编程方式卸载应用程序

时间:2014-11-03 17:56:26

标签: c# .net visual-studio-2010

我尝试thisthis以编程方式卸载应用程序。我没有收到任何错误或异常但是我的机器上没有卸载应用程序。请参阅尝试过的代码

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#以编程方式卸载应用程序。

1 个答案:

答案 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推出它!