从C#静默执行MSI包

时间:2012-09-16 15:31:08

标签: c# windows-installer

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

Process.Start("yourfile.msi"); 

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

但是

System.IO.Directory.GetCurrentDirectory();

获取当前执行的文件目录。你可以通过像这样添加文件名来获取文件路径:

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

答案 1 :(得分:1)

使用以下开关:

/ 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以获取详细的命令行选项。

相关问题