예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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;
        }