有两种方法可以卸载我的应用程序。
我们在设置中有一个特殊的卸载程序,它会启动一些特殊的对话框来获取用户输入。以这种方式,根据用户输入进行卸载。但问题是,如果使用“添加/删除程序”卸载它,则不会执行特殊的卸载过程。有没有办法通过“添加/删除程序”启动特定于应用程序的卸载?
答案 0 :(得分:1)
如果您使用的是基于MSI的项目,则“卸载”按钮将以被动模式运行卸载。因此,将跳过UI或对话框序列中的任何操作。要解决此问题,通常会禁用卸载按钮(请参阅ARPNOREMOVE)并要求最终用户通过“修改”按钮(确实显示UI)。
答案 1 :(得分:0)
您可以使用WMI执行此操作。您可以根据需要自定义卸载程序软件。为实现此目的,您必须使用Win32_Product class和uninstall method。以下是在本地计算机上卸载程序的示例:
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);
}
}
}
}
您可以在 Error Codes ( Windows桌面应用)中查看返回值。