无法使用 Process.Start 从网络路径运行 MSI - 是否可以从网络共享运行 msi?

无法使用 Process.Start 从网络路径运行 MSI - 是否可以从网络共享运行 msi?

我想启动一个位于网络共享上的 MSI,但是却显示 msiexec“帮助”对话框(这表明进程启动信息有问题):

string testPath1 = @"\\mynetwork.share.com\dev\builds 1.0\product.msi";  //DOESN'T WORK
string testPath2 = @"C:\users\username\desktop\product.msi";         //DOES WORK

ProcessStartInfo startMsiexecProcess = new ProcessStartInfo(@"C:\windows\system32\msiexec.exe");
startMsiexecProcess.Arguments = @"/i " + testPath1;
Process.Start(startMsiexecProcess);

我尝试过 testPath1 的变体 - 即不使用完全限定名称和其他网络共享。我也尝试过调整参数的间距。

最后,如果我将“本地”路径更改为完全合格的格式,如下所示:

string testPath2 = @"\\mylocalmachine.domain.com\c$\users\username\desktop\product.msi";

..它确实能正常工作。因此,当我尝试在网络共享上执行此操作时,我相信问题可能不是由格式错误的字符串引起的。

可以从网络共享运行 msi 吗?

答案1

它是我的路径中的空格:“builds 1.0”。Process.Start 可能将其解释为参数分隔符。

为了解决这个问题,我在正在运行的 MSI 路径周围添加了引号,即:

"\"" + testPath1 + "\""

这篇文章让我找到了解决方案:如何在 C-Sharp 中处理进程启动时带有空格的值

相关内容