I'm trying to install a msi on a remote machine , i changed DCOM Config to get access from my machine when using methode install of win32_product it fails with return output 1601 ( that means that Windows Installer service could not be accessed ) i did some research in the net , and run the service manually using services.msc and did msiexec / unreg
and msiexec /register
, still not working ps: both machines a running on windows 10 here is my code
Ps : i used the same code for win32_Bios to get SerialNumber and it works
try { \\machine is the name of the computer string PackageLocation = @"\\" + machine + msi; ConnectionOptions connection = new ConnectionOptions(); connection.Username = username; connection.Password = password; connection.Impersonation = ImpersonationLevel.Impersonate; connection.Authentication = AuthenticationLevel.Default; connection.EnablePrivileges = true; //define the WMI root name space ManagementScope scope = new ManagementScope(@"\\" + machine + @"\root\CIMV2", connection); //define path for the WMI class ManagementPath p = new ManagementPath("Win32_Product"); //define new instance ManagementClass classInstance = new ManagementClass(scope, p, null); // Obtain in-parameters for the method ManagementBaseObject inParams = classInstance.GetMethodParameters("Install"); // Add the input parameters. inParams["AllUsers"] = true; //to install for all users inParams["Options"] = ""; //paramters must be in the format “property=setting“ inParams["PackageLocation"] = @"c:\install\installer.msi"; //source file must be on the remote machine // Execute the method and obtain the return values. ManagementBaseObject outParams = classInstance.InvokeMethod("Install", inParams, null); // List outParams string retVal = outParams["ReturnValue"].ToString(); string msg = null; switch (retVal) { case "0": msg = "The installation completed successfully."; break; case "2": msg = "The system cannot find the specified file. \n\r\n\r" + msi; break; case "3": msg = "The system cannot find the path specified. \n\r\n\r" + msi; break; case "1619": msg = "This installation package \n\r\n\r " + msi + "\n\r\n\rcould not be opened, please verify that it is accessible."; break; case "1620": msg = "This installation package \n\r\n\r " + msi + "\n\r\n\rcould not be opened, please verify that it is a valid MSI package."; break; default: msg = "Please see... \n\r\n\r http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/error_codes.asp \n\r\n\rError code: " + retVal; break; } // Display outParams Console.WriteLine(msg, "Installation report"); } catch (ManagementException me) { Console.WriteLine(me.Message + "Management Exception"); } catch (COMException ioe) { Console.WriteLine(ioe.Message, "COM Exception"); } }