2014-10-06 38 views
0

我正在使用C#代码使用运行msiexec的进程安装程序,并为其提供MSI文件的路径。 这是我的代码使用方法:C#MsiExec将程序安装到错误的位置

string pathtoMsiFile = "\"" + msiPath + msiName + "\""; 
Process p = new Process(); 
p.StartInfo.FileName = "msiexec.exe"; 
p.StartInfo.Arguments = "/i " + pathtoMsiFile + " /quiet"; 
p.Start(); 
p.WaitForExit(); 

奇怪的是,当我尝试安装程序,对某个版本它,它安装到正确的位置我会希望在C:\path但不同的版本,它出于某种原因安装到D:\path。如果我手动打开MSI,则默认位置为C:\path。任何想法为什么?

+0

您可以在startInfo参数中添加一个/ l * v/[path] [logfile]来生成安装服务的日志,它将帮助您找出哪些情况下路径没有正确设置 – CheGueVerra 2014-10-06 14:51:42

+0

最可能的问题是您的MSI没有正确的默认安装位置,所以当您没有UI运行时,它会转到Windows默认设置(可能是大多数空间的驱动器)。设置适当位置的东西在你的UI序列中,当你做/安静的时候会被压制。 – PhilDW 2014-10-06 16:52:37

回答

1

最终它出现问题是与msiexec试图安装的程序。 我不是那个程序的开发者,所以我无法自己先进的知道这个问题。 该程序在其安装中有一个自定义操作,该操作将表示要安装的驱动器的变量设置为安装操作系统的变量。问题是,此操作只能通过安装的UI(双击MSI时)调用,而不能在使用安静的CLI命令进行安装时调用。