在远程计算机上安装msi(ManagementException“未找到”)

时间:2011-06-09 15:16:24

标签: c# exception windows-installer wmi

我正在尝试使用WMI在远程计算机上安装msi,我遇到了一些我无法弄清楚的问题。

当我在运行的本地计算机的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());  
}

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我已经明白了;

我尝试安装的机器运行的是Server 2003,默认情况下没有安装Windows Install Provider。 (link

我将目标计算机更改为运行Windows 7的计算机,并且运行正常。

答案 1 :(得分:1)

我记得我必须使用以下格式来启动这个过程:

ManagementClass theClass = new ManagementClass(@"\\server\root\cimv2:Win32_Process");