C# 设置卸载和添加/删除程序卸载

C# 设置卸载和添加/删除程序卸载,c#,.net,installation,installshield,addremoveprograms,C#,.net,Installation,Installshield,Addremoveprograms,有两种方法可以卸载我的应用程序 通过使用相同的设置 在控制面板中添加/删除程序 在我们的设置中有一个特殊的卸载过程,它会启动一些特殊的对话框来获取用户输入。这样,卸载将根据用户输入进行。但问题是,如果使用“添加/删除程序”卸载特殊卸载过程,则不会执行该过程。有没有办法通过“添加/删除程序”启动特定于应用程序的卸载?您可以使用。您可以根据需要自定义卸载程序软件。要实现这一点,必须使用and。以下是在本地计算机上卸载程序的示例: using System; using System.Manageme

有两种方法可以卸载我的应用程序

  • 通过使用相同的设置
  • 在控制面板中添加/删除程序
  • 在我们的设置中有一个特殊的卸载过程,它会启动一些特殊的对话框来获取用户输入。这样,卸载将根据用户输入进行。但问题是,如果使用“添加/删除程序”卸载特殊卸载过程,则不会执行该过程。有没有办法通过“添加/删除程序”启动特定于应用程序的卸载?您可以使用。您可以根据需要自定义卸载程序软件。要实现这一点,必须使用and。以下是在本地计算机上卸载程序的示例:

    using System;
    using System.Management;
    using System.Windows.Forms;
    
    namespace WMISample
    {
        public class CallWMIMethod
        {
            public static void Main()
            {
                try
                {
                    ManagementObject classInstance =
                        new ManagementObject("root\\CIMV2",
                        "Win32_Product.IdentifyingNumber='{EDDE41A3-A870-4D97-A1ED-67FF62AA0552}',Name='MyServiceSetup',Version='1.0.0'",
                        null);
    
                    // No method in-parameters to define
    
    
                    // Execute the method and obtain the return values.
                    ManagementBaseObject outParams =
                        classInstance.InvokeMethod("Uninstall", null, null);
    
                    // List outParams
                    Console.WriteLine("Out parameters:");
                    Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
                }
                catch(ManagementException err)
                {
                    MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
                }
            }
        }
    }
    
    您可以在(Windows桌面应用程序)中检查返回值。

    您可以使用。您可以根据需要自定义卸载程序软件。要实现这一点,必须使用and。以下是在本地计算机上卸载程序的示例:

    using System;
    using System.Management;
    using System.Windows.Forms;
    
    namespace WMISample
    {
        public class CallWMIMethod
        {
            public static void Main()
            {
                try
                {
                    ManagementObject classInstance =
                        new ManagementObject("root\\CIMV2",
                        "Win32_Product.IdentifyingNumber='{EDDE41A3-A870-4D97-A1ED-67FF62AA0552}',Name='MyServiceSetup',Version='1.0.0'",
                        null);
    
                    // No method in-parameters to define
    
    
                    // Execute the method and obtain the return values.
                    ManagementBaseObject outParams =
                        classInstance.InvokeMethod("Uninstall", null, null);
    
                    // List outParams
                    Console.WriteLine("Out parameters:");
                    Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
                }
                catch(ManagementException err)
                {
                    MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
                }
            }
        }
    }
    

    您可以在(Windows桌面应用程序)中检查返回值。

    如果您使用的是基于MSI的项目,则“卸载”按钮将以被动模式运行卸载。因此,将跳过UI或对话框序列中的任何操作。要解决此问题,通常会禁用卸载按钮(请参阅),并要求最终用户通过修改按钮(它会显示UI)。

    如果您使用的是基于MSI的项目,则卸载按钮将以被动模式运行卸载。因此,将跳过UI或对话框序列中的任何操作。要解决此问题,通常会禁用卸载按钮(请参阅),并要求最终用户通过修改按钮(显示UI)。

    单击“卸载”时是否要启动自定义的卸载对话框关于“添加/删除程序”?当您单击“添加/删除程序”上的“卸载”时,是否要启动自定义的“取消安装”对话框?+1,谢谢您的回答。我试图更改“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{xxxx}-->卸载字符串”以获取UI,但失败。MSIEXE是否使用此字符串卸载应用程序?如果是,UnistallString的用途是什么?不。此处的卸载字符串可能是为了与直接查看卸载密钥但不了解MSI的应用程序向后兼容。你的建议是我能找到的唯一可能的解决办法。目前,我们的设置中不提供修改或修复选项。但ARP按钮仍然显示“更改”。是否可以更改按钮显示名称?我相信按钮上的文本由Microsoft控制,因此您可以通过升级或降级Windows版本来查看不同的文本。否则(现实地)您无法更改此按钮上的文本。+1,谢谢您的回答。我试图更改“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{xxxx}-->卸载字符串”以获取UI,但失败。MSIEXE是否使用此字符串卸载应用程序?如果是,UnistallString的用途是什么?不。此处的卸载字符串可能是为了与直接查看卸载密钥但不了解MSI的应用程序向后兼容。你的建议是我能找到的唯一可能的解决办法。目前,我们的设置中不提供修改或修复选项。但ARP按钮仍然显示“更改”。是否可以更改按钮显示名称?我相信按钮上的文本由Microsoft控制,因此您可以通过升级或降级Windows版本来查看不同的文本。否则(实际上)您无法更改此按钮上的文本。