0

这个简短部分的主要任务是获取一些计算机名称并在这台 PC 上安装所需的软件(通过 msiexec.exe)

我这样做

    {                       

            Credential creds = new Credential();
            UserAttr UserCredential = new UserAttr();
            UserCredential = creds.DefaultFlagsTest();              
            ConnectionOptions connection = new ConnectionOptions();
            connection.Username = UserCredential.UserName;
            connection.Password = UserCredential.password;
            connection.Authentication = AuthenticationLevel.PacketPrivacy; 
            connection.Authority = "ntlmdomain:tcc1";

            ManagementScope scope = new ManagementScope(
                "\\\\"+computerName+"\\root\\CIMV2", connection);
            scope.Connect();

            ManagementClass classInstance =
                new ManagementClass(scope,
                new ManagementPath("Win32_Process"), null);

            ManagementBaseObject inParams = classInstance.GetMethodParameters("Create");

            inParams["CommandLine"] = @"msiexec.exe /qb /m log.mif /i ""\\tcc1-pgh10.tcc1.local\swshare$\Packages\NetAgent_10.0.3361\exec\Kaspersky Network Agent.msi""";       

            ManagementBaseObject outParams = classInstance.InvokeMethod("Create", inParams, null);

            int res = int.Parse(outParams["ReturnValue"].ToString());

            if (res == 0)
            {
                MessageBox.Show(outParams["ReturnValue"].ToString(), "Result");                   
            }
            else throw new System.ComponentModel.Win32Exception(res);             

            Close();           
    }

该程序返回 0,但这并不意味着 msiexec 以同样的成功完成。错误是检查包的路径.. 或 smth。但是我在日志文件 log.mif 中看到的内容:

.............................
开始属性
名称 = “产品”
ID = 2
访问 = 只读
存储 = 特定
类型 =字符串(64)
值=“\tcc1-pgh10.tcc1.local\swshare$\Packages\NetAgent_10.0.3361\exe”
结束属性
...... …………

他将包的名称裁剪为 64 symb。原因是 Win32_Process.Create 的参数CommandLine有这个限制。我不知道如何克服这个...

Win32_Process.Create 也有属性CurrentDirectory,这似乎可以解决这个问题。但他无法处理 UNC 路径。

而且我不能缩短安装目录。这是不对的。(我可以说我已经做到了。它的工作)

拜托,也许你知道如何用长的安装路径解决这个问题?不同的属性如 TARGETDIR 或 INSTALLDIR 只设置安装路径,没有 FROM...

4

1 回答 1

0

我放弃

START ATTRIBUTE 
NAME = "Product" 
ID = 2 
ACCESS = READ-ONLY 
STORAGE = SPECIFIC 
TYPE = STRING(64) 
VALUE = "\tcc1-pgh10.tcc1.local\swshare$\Packages\NetAgent_10.0.3361\exe"
END ATTRIBUTE

该值限制为 64symb,包括路径。它将仅在本地计算机上正常工作,而不使用 UNC 路径

于 2013-12-11T06:07:01.213 回答