Deinstallieren einer Anwendung während der Installation funktioniert nicht

Ich entwickle eine WPF-Anwendung in C #. Derzeit installiert meine MSI die aktuelle Anwendung auf dem Computer. Ich muss zwei unterstützende Anwendungen der vorhandenen Version während der Installation der neuen (MSI) deinstallieren.

Ich habe Code geschrieben, um die Anwendung programmgesteuert zu deinstallieren. Dies funktioniert nicht, wenn ich die Deinstallationsmethode für die Anwendung in @ aufrufinstaller.cs .Die gleiche Methode deinstalliert die beiden Anwendungen erfolgreich, wenn ich von einem anderen Teil des Projekts als @ anrufinstaller.cs.

Deinstallationsmethode:

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 fileName = "MsiExec.exe";
                        string arguments = "/x{4F6C6BAE-EDDC-458B-A50F-8902DF730CED}";

                        ProcessStartInfo psi = new ProcessStartInfo(fileName, arguments)
                        {
                            CreateNoWindow = true,
                            UseShellExecute = false,
                            RedirectStandardOutput = true
                        };

                        Process process = Process.Start(psi);

                        process.WaitForExit();

                        return uninstallCommand;
                    }
                }
            }

            return "";
        }

Update: Nach der Verwendung von WIX MSI Installer

Ich habe das CustomAction-Projekt in WIX erstellt, und das Setup-Projekt mit WIX erstellt.Bitte sehen Sie meine Product.wxs

 <InstallExecuteSequence>
      <Custom Action='ShowCustomActionCustomAction' After='InstallFinalize'>NOT Installed</Custom>
    </InstallExecuteSequence>

Ich habe den Code, um 3 Anwendungen in CustomAction.cs zu deinstallieren. Wenn ich mein WIX MSI starte, installiere ich die neue Anwendung und deinstalliere die erste Anwendung. Die verbleibenden zwei Anwendungen werden nicht deinstalliert Die Benutzeroberfläche wird geschlossen und es passiert nichts.

Kannst du mir sagen, wie ich die 3-Anwendung während der Installation meines WIX MSI deinstallieren soll?

Update 2:

<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
    <Upgrade Id="89CF8BE7-05EE-4C7E-9EFC-0249DD260EBB">
      <UpgradeVersion
         Minimum="1.0.0.0" Maximum="99.0.0.0"
         Property="PREVIOUSVERSIONSINSTALLED"
         IncludeMinimum="yes" IncludeMaximum="no" />
    </Upgrade>
<InstallExecuteSequence>     
      <RemoveExistingProducts Before="InstallFinalize" />
    </InstallExecuteSequence>
  </Product>

Die obigen Einstellungen in product.wxs deinstallieren die vorherige Version und installieren die neue. Dazu muss ich noch zwei weitere Abhängigkeitsanwendungen deinstallieren. So deinstallieren Sie die Abhängigkeitsanwendung mit dem Wix-Installationsprogramm.

Kann mir jemand helfen, wie ich die installierte Anwendung auf dem Computer überprüfe und diese deinstalliere, bevor ich meine neue wix msi installiere.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage