【问题标题】:How to run silent installer in C#如何在 C# 中运行静默安装程序
【发布时间】:2013-12-18 04:08:29
【问题描述】:

我有以下 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

第二行是supposed 以静默模式启动安装程序,以便进程在后台运行,安装向导根本不会出现。在命令提示符下运行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??

旁注:-s -v -qn 是静音模式下运行的开关。

【问题讨论】:

  • 尝试将所有标志移到可执行文件的名称之前。
  • @Amy,在可执行文件之前,在哪里?
  • @Amy,如果你的意思是 /C 在哪里,那我已经试过了。
  • 如果你用引号括住你的命令,它有效吗? "/c \"" + desktopPath + "\\" + "MyInstaller_7.1.51.14.exe –s –v –qn\"",所以你应该以字符串 /c "C:\Users\ME\Desktop\MyInstaller_7.1.51.14.exe -s -v -qn" 结尾。

标签: c# cmd silent-installer


【解决方案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”进行成功的测试。也许您的安装人员的反应不同。

【讨论】:

  • 是的,不幸的是,当我尝试上面的代码时,窗口仍然出现。不错的尝试。
  • @Zolt 是 -s 开关假设意思是“沉默”?
  • 尝试删除它(-s)也许它会以某种方式发生冲突。如果这不起作用,请尝试注释掉 WindowStyle 行。
【解决方案2】:

尝试直接运行安装程序:

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

【讨论】:

  • 这是一个很好的尝试,但是当我尝试它时,安装程​​序 UI 仍然显示。不知道为什么。好像开关由于某种原因被忽略了。
猜你喜欢
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
相关资源
最近更新 更多