我正在使用下一个代码,它适用于我的服务。但是我还添加了“net stop serviceName”过程来卸载我的安装项目中的自定义操作(也许这很重要)。
private static string getMsiexecParameters()
{
return string.Format("/x {0} /quiet /qn", GetProductCode(CProductName));
}
public static string GetProductCode(string productName)
{
string query = string.Format("select * from Win32_Product where Name='{0}'", productName);
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
foreach (ManagementObject product in searcher.Get())
return product["IdentifyingNumber"].ToString();
}
return null;
}
public static void Uninstall()
{
ProcessStartInfo psi = new ProcessStartInfo("msiexec.exe", getMsiexecParameters());
Process.Start(psi);
}
对不起额外的代码,它来自我的工作项目