从C#静默执行MSI包

新手问题,让我尽量让它尽可能清楚。 我有一个程序需要静默执行一个msi包(好多个但不是问题)

MSI包包含在与我的程序位于同一目录中的文件夹中。 我暂时给它一个简单的名称“InstallFiles”。

我并不热衷于使用完整路径名称,例如。 C:\我的程序\另一个目录\另一个目录等,因为它将被放在多个PC上,无论是旧的还是新的,在这种情况下,驱动器号可以改变。 到目前为止我有:

install.StartInfo.FileName = "msiexec"; install.StartInfo.Arguments = "/i F:\\InstallFiles\\JRE.msi"; install.Start(); install.WaitForExit(); 

但是,当它启动时它只给我Windows Installer开关信息然后终止,我如何让它运行,我将如何改变文件路径?

执行.msi文件应该像.exe文件,这是你的答案: https : //stackoverflow.com/a/12436300/359170

使用以下代码启动应用程序:

 Process.Start("yourfile.msi"); 

并且它不需要完整路径,它将当前目录添加到您在那里写入的文件名。

 System.IO.Directory.GetCurrentDirectory(); 

获取当前执行的文件目录。 您可以通过向其添加文件名来获取文件路径,如下所示:

  string path = System.IO.Directory.GetCurrentDirectory() + "\\yourfile.msi"; 

使用以下开关:

/ Q [N | B | – [R | F]

  Sets user interface level n - No UI b - Basic UI r - Reduced UI 

有关详细的命令行选项,请查看http://msdn.microsoft.com/en-us/library/windows/desktop/aa367988%28v=vs.85%29.aspx 。