在远程计算机上安装msi(ManagementException“未找到”)
问题描述:
我目前正在尝试在使用WMI的远程计算机上安装msi,并且遇到了一些我无法解决的问题出。在远程计算机上安装msi(ManagementException“未找到”)
当我在本地计算机的WMI连接上使用以下代码时,它运行正常。但是,当我将连接更改为远程计算机时,它将引发ManagementException,其中
object res = installer.InvokeMethod("Install", methodArgs);
带有消息“未找到”。
我已验证与远程计算机的WMI连接工作正常,并且msi文件的位置正确。
try
{
ManagementClass installer = new ManagementClass(scope, new ManagementPath("Win32_Product"), new ObjectGetOptions());
object[] methodArgs = { @"C:\Deploy\Deploy.msi", @"TARGETDIR=C:\", true };
object res = installer.InvokeMethod("Install", methodArgs);
if ((UInt32)res != 0)
throw new Exception("Install error " + res.ToString());
else
project.Log(Level.Info, "Succesfully installed {0}", msi);
}
catch (Exception ex)
{
project.Log(Level.Error, ex.ToString());
}
任何想法?
答
我已经想通了;
我尝试安装的计算机正在运行Server 2003,该计算机默认没有安装Windows Install Provider。 (link)
我将目标机器更改为运行Windows 7的目标机器,并且运行完美。
答
我记得我不得不使用以下格式启动过程:
ManagementClass theClass = new ManagementClass(@"\\server\root\cimv2:Win32_Process");
该文件是否存在于远程计算机上的C:\ Deploy \ Deploy.msi上? – sgmoore 2011-06-09 15:23:25
是的,我已验证文件的位置正确。 – Avilan 2011-06-09 15:27:25
好吧,正常的原因是忘记安装实际上运行在远程计算机上,因此文件必须在远程计算机上,而不是您的计算机启动该文件。没有看到你的代码有什么问题,而且我自己也使用过类似的东西。您能否尝试检查远程计算机上的事件日志,并且还可以更改安装以创建提供进一步线索的日志文件。 – sgmoore 2011-06-09 16:01:57