/// <summary> /// Reinstall/Repair a Windows Installer Package based on the Packagename /// </summary> /// <param name="Name"></param> /// <param name="ReinstallMode"></param> /// <returns>MSI Exit Code or 99 if the PRoduct was not found</returns> public UInt32 ReinstallMSI_Name(string Name, reinstallMode ReinstallMode) { ManagementObjectCollection CliAgents; WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\cimv2"; CliAgents = oProv.ExecuteQuery("SELECT * FROM Win32_Product WHERE Name ='" + Name + "'"); foreach (ManagementObject CliAgent in CliAgents) { ManagementBaseObject inParams = CliAgent.GetMethodParameters("Reinstall"); inParams.SetPropertyValue("ReinstallMode", (UInt32)ReinstallMode); ManagementBaseObject result = CliAgent.InvokeMethod("Reinstalll", inParams, null); return(UInt32.Parse(result.GetPropertyValue("ReturnValue").ToString())); } return(99); }
/// <summary> /// Reinstall/Repair a Windows Installer Package based on the MSI-ID /// </summary> /// <param name="MSIID"></param> /// <param name="ReinstallMode"></param> /// <returns>MSI Exit Code or 99 if MSIID was not found</returns> public UInt32 ReinstallMSI_ID(string MSIID, reinstallMode ReinstallMode) { ManagementObjectCollection CliAgents; WMI.Provider oProv = new WMI.Provider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\cimv2"; CliAgents = oProv.ExecuteQuery("SELECT * FROM Win32_Product WHERE IdentifyingNumber ='" + MSIID + "'"); foreach (ManagementObject CliAgent in CliAgents) { ManagementBaseObject inParams = CliAgent.GetMethodParameters("Reinstall"); inParams.SetPropertyValue("ReinstallMode", (UInt32)ReinstallMode); ManagementBaseObject result = CliAgent.InvokeMethod("Reinstalll", inParams, null); return UInt32.Parse(result.GetPropertyValue("ReturnValue").ToString()); } return 99; }