如何在C#中运行静默安装程序

时间:2013-12-17 19:34:52

标签: c# cmd silent-installer

我有以下C#代码:

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Process.Start("cmd.exe", "/c" + desktopPath + "\\" + "MyInstaller_7.1.51.14.exe –s –v –qn");

第一行获取.exe所在桌面的路径。字符串desktopPath用于第二行。

第二行 假设 以静默方式启动安装程序,以便进程在后台运行,安装向导根本不显示。在命令提示符下运行desktopPath + "\\" + "MyInstaller_7.1.51.14.exe –s –v –qn"的字符串结果工作正常,安装程序以静默方式运行。如果有人想知道,

的字符串结果

desktopPath + "\\" + "MyInstaller_7.1.51.14.exe –s –v –qn"

C:\Users\ME\Desktop\MyInstaller_7.1.51.14.exe -s -v -qn

并在命令提示符下运行此命令以静默方式运行安装。

不幸的是,在C#代码中触发相同的命令:

Process.Start("cmd.exe", "/c" + desktopPath + "\\" + "MyInstaller_7.1.51.14.exe –s –v –qn");

不以静默方式运行安装程序。相反,向导出现,对用户可见。

有谁知道如何修改它:

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Process.Start("cmd.exe", "/c" + desktopPath + "\\" + "MyInstaller_7.1.51.14.exe –s –v –qn");

这样安装程序实际上以静默模式运行,而安装程序UI没有显示?

SIDE注意:-s -v -qn是以静音模式运行的开关。

2 个答案:

答案 0 :(得分:1)

试试这个,它对我有用:

ProcessStartInfo psi = new ProcessStartInfo();
psi.Arguments = "–s –v –qn";
psi.CreateNoWindow = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.FileName = "MyInstaller_7.1.51.14.exe";
Process.Start(psi);

我不知道你提供的论据是否试图隐藏窗口,但也许是这样,部分内容将不再是必要的。

请注意,我使用“notepad.exe”进行了成功的测试。也许您的安装程序反应不同。

答案 1 :(得分:0)

尝试直接运行安装程序:

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string installerPath = Path.Combine(desktopPath, "MyInstaller_7.1.51.14.exe");
Process.Start(installerPath, "–s –v –qn");