2011-06-09 118 views
1

我目前正在尝试在使用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()); 
} 

任何想法?

+0

该文件是否存在于远程计算机上的C:\ Deploy \ Deploy.msi上? – sgmoore 2011-06-09 15:23:25

+0

是的,我已验证文件的位置正确。 – Avilan 2011-06-09 15:27:25

+0

好吧,正常的原因是忘记安装实际上运行在远程计算机上,因此文件必须在远程计算机上,而不是您的计算机启动该文件。没有看到你的代码有什么问题,而且我自己也使用过类似的东西。您能否尝试检查远程计算机上的事件日志,并且还可以更改安装以创建提供进一步线索的日志文件。 – sgmoore 2011-06-09 16:01:57

回答

3

我已经想通了;

我尝试安装的计算机正在运行Server 2003,该计算机默认没有安装Windows Install Provider。 (link

我将目标机器更改为运行Windows 7的目标机器,并且运行完美。

1

我记得我不得不使用以下格式启动过程:

ManagementClass theClass = new ManagementClass(@"\\server\root\cimv2:Win32_Process"); 
相关问题