我编写了一个程序,使用C#中的ManagementObject自动卸载一些程序。它工作正常,除了某些程序会自动重新启动计算机,并且这会破坏我程序的目的。有没有什么办法可以让它等到一切都完成卸载重新启动?如何在不重新启动的情况下卸载程序
这里是实际卸载程序的方法:
static void UninstallProduct(string path)
{
ManagementObject product = new ManagementObject(path);
if ((product != null) && (product.Path.ClassName == "Win32_Product"))
{
Console.WriteLine(
"Uninstalling: "
+ product.GetPropertyValue("Name")
+ "...");
object result = product.InvokeMethod("Uninstall", null);
Console.WriteLine(
"The Uninstall method result is {0}",
result.ToString());
}
}
我对ManagementObject类不熟悉,所以我没有把它写成实际的答案。在使用Windows Installer之后,我建议您看看是否有一个标志告诉对象不要让安装程序重新启动系统,并且如果有可以在返回值中查找的标志,告诉您安装需要重启完成。这就是Windows Installer的工作原理。然后,一旦所有程序都被卸载,如果需要重新启动,则可以强制系统重新启动。 – RobH